在iPad中将fbx文件作为资产包加载 - 内存问题

时间:2014-01-14 17:19:01

标签: ios6 ios7 unity3d ipad-2 unityscript

在我们的iPad应用中,我们需要加载fbx文件(大小为1MB - 100MB)作为资产包。我开始使用大小为26MB的fbx文件进行测试,它创建了一个大小为17MB的资产包。当我运行测试场景以在iPad中加载此资产包时,它会在大约1分钟后加载。然后我得到了记忆警告。我使用Xcode监视内存,似乎内存使用量从大约1MB增加到65Mb,然后就在模型显示内存一次增加到大约175MB之前。以下是我的代码。

我见过其他用户发布的类似问题。但我没有在任何这些线程中看到它的正确解决方案。当我读到这些主题时,我认为在解压缩资产包时内存会增加。但我不明白它为什么会大约170MB左右。

我们可以做些什么来减少内存使用量? 感谢

    public class CachingLoad : MonoBehaviour {
    public string BundleURL;
    public string AssetName;
    public int version;

    void Start() {
        StartCoroutine (DownloadAndCache());
    }

    IEnumerator DownloadAndCache (){
        // Wait for the Caching system to be ready
        while (!Caching.ready)
            yield return null;

        BundleURL = "http://10.30.3.228:8080/TestDownload/assetBundle1.unity3d";
        // Load the AssetBundle file from Cache if it exists with the same version or download and store it in the cache
        using(WWW www = WWW.LoadFromCacheOrDownload (BundleURL, version)){
            yield return www;
            if (www.error != null)
                throw new Exception("WWW download had an error:" + www.error);
            AssetBundle bundle = www.assetBundle;
            if (AssetName == "")
                Instantiate(bundle.mainAsset);
            else
                Instantiate(bundle.Load(AssetName));
                    // Unload the AssetBundles compressed contents to conserve memory
                    bundle.Unload(false);

        } // memory is freed from the web stream (www.Dispose() gets called implicitly)
    }
}

0 个答案:

没有答案