I have a Unity WebGL project that tries to load AssetBundles, but I get an error:
Unable to open archive file: http://localhost:50212/StreamingAssets/Bundles/language_english
The code that creates the AssetBundles:
using UnityEditor;
using System.IO;
using UnityEngine;
public class JC_Bundler: Editor
{
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string path = Path.Combine(Application.streamingAssetsPath, JC_Bundles.Directory);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget);
AssetDatabase.Refresh();
}
}
I can see the AssetBundles do get created and it works on other Windows Standalone and Android platforms.
The code that read the AssetBundle:
public void PrepareLanguageAssets(SystemLanguage language, UnityAction onDone, UnityAction onFail)
{
StartCoroutine(LoadBundle("language_" + language, bundle => {
if (bundle == null)
{
onFail();
}
else
{
if (languageBundle) languageBundle.Unload(true);
languageBundle = bundle;
onDone();
}
}));
}
public void LoadLanguageAsset<T>(String name, UnityAction<T> callback) where T : UnityEngine.Object
{
StartCoroutine(LoadAsset(languageBundle, name, callback));
}
IEnumerator LoadAsset<T>(AssetBundle bundle, string objectNameToLoad, UnityAction<T> callback) where T: UnityEngine.Object
{
AssetBundleRequest asset = bundle.LoadAssetAsync<T>(objectNameToLoad);
yield return asset;
callback(asset.asset as T);
}
So when I switch my Unity Editor Platform to WebGL and do a "Build And Run" with the same project I see the above mentioned error.
How can I load AssetBundles in WebGL?