在使用AssetBundle的LoadAsset异步加载场景时报错。
错误提示:InvalidOperationException: This method cannot be used on a streamed scene AssetBundle.。
调试了代码发现每次在LoadAsset(name)的时候就会出错。
网上很少有这个错误文章,只找到一个说法是不能加载.unity3d动态场景资源包。
代码如下:
//原场景调用AssetBundle管理器
void Start()
{
AssetBundleLoaderAsync async = AssetBundleMgr.Instance.LoadAsync(@"scene\scene_selectrole.unity3d", "Scene_SelectRole");
async.OnLoadComplete = OnLoadComplete;
}
//完成后创建目标场景
private void OnLoadComplete(UnityEngine.Object obj)
{
Instantiate(obj);
}
//管理器创建一个空物体
public AssetBundleLoaderAsync LoadAsync(string _path, string _name)
{
GameObject obj = new GameObject("AssetBundleLoadAsync");
AssetBundleLoaderAsync async = obj.GetOrCreatComponent<AssetBundleLoaderAsync>();
async.Init(_path, _name);
return async;
}
//空物体Start执行读取场景资源
private void Start()
{
StartCoroutine(Load());
}
IEnumerator Load()
{
m_Request = AssetBundle.LoadFromMemoryAsync(LocalFileMgr.Instance.GetBuffer(m_FullPath));
yield return m_Request;
m_Bundle = m_Request.assetBundle;
if (OnLoadComplete != null)
{
OnLoadComplete(m_Bundle.LoadAsset(m_Name));//报错
Destroy(gameObject);
}
}
望解答!