Kevin_meta 2022-12-17 10:59 采纳率: 11.1%
浏览 95
已结题

AssetBundle异步加载场景

在使用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);
        }
    }

望解答!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-12-17 15:01
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月10日
  • 修改了问题 12月17日
  • 创建了问题 12月17日