【问题标题】:Unity - don't load the same assetbundle twiceUnity - 不要两次加载相同的资产包
【发布时间】:2012-10-10 07:33:12
【问题描述】:

我在下载资产包时遇到问题。

我得到错误:

The asset bundle 'url/levelpackIphone-Copy.unity3d' can't be loaded because
another asset bundle with the same files are already loaded

我需要检查资产包是否已经下载。我的问题是我不能只存储 URL,因为您下载的文件可以有不同的名称,但仍然包含相同的内容。

因此,我需要检查资产包是否已经下载。 我真的不喜欢使用像

这样的东西
bundle.Unload(false);

【问题讨论】:

  • 统一标签适用于 Microsoft Unity。请不要滥用它。
  • 哦,我很抱歉。我不知道统一!= unity3d。我以为他们是一样的。 :)
  • 如果可能的话,听起来像重组捆绑结构将是最好的选择。然后你可以使用附加加载。
  • 是的,这个问题不太可能出现在我正在构建的完整版本中,因为现在我正在使用 2 个相同的捆绑包,我将其重命名为 1。这就是这个错误.它不应该在完整版中发生,但我宁愿能够在代码中以某种方式实际修复它,而不是下载 2 个相同的包。

标签: bundle unity3d assets


【解决方案1】:

我遇到了同样的问题,unity 抛出了以下错误:

无法加载缓存的 AssetBundle。 已经从另一个 AssetBundle 加载了同名文件

我在关卡的不同阶段加载资产包,但是当我尝试重新启动关卡并尝试再次加载资产包时,我遇到了上述相同的错误。然后我尝试将资产包保存在列表中并尝试在级别重新启动时清除列表,但这并没有解决问题。我什至尝试Caching.CleanCache() 从内存中删除任何数据但没有用。我在下载后将资产包保存在磁盘上,并在关卡加载后再次从磁盘加载它们。

解决方案:

private IEnumerator LoadAssetFromFile(string _name) 
{ 
    print("Came inside LoadAssetFromFile :" + _name); 
    WWW www= new WWW(string.Concat("file:///", Application.dataPath, "/", _name +".unity3d"));//(m_savePath + _name); 
    //WWW www= new WWW(string.Concat(Application.dataPath, "/", _name));//(m_savePath + _name);

    yield return www;

    if(www.error == null)
    {
        //m_bundle =  www.assetBundle;
        AssetBundle bundle =  www.assetBundle;
        www.Dispose();
        www = null;
        string path = m_savePath + _name;
        //object [] obj = m_bundle.LoadAll();
        //for(int i=0; i< obj.Length; i++)
        //{
            //print ("Obj :"+ i +" " + obj[i].ToString());
        //}
        bundle.LoadAll();
        print ("AssetBundle is :" + bundle.mainAsset);
        print("============> " + path);
        GameObject _go =  (GameObject)Instantiate(bundle.mainAsset);
        bundle.Unload(false);
    }
    else
    {
        return false;
    }   
}

在实例化gameObject 之后使用bundle.Unload(false) 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多