Ios6 在iPad中将fbx文件作为资产包加载-内存问题
在我们的iPad应用程序中,我们需要加载fbx文件(大小为1MB-100MB)作为资产包。我开始测试一个26MB大小的fbx文件,它创建了一个17MB大小的资产包。当我运行测试场景在iPad中加载这个资产包时,它会在大约1分钟后加载。然后我得到一个记忆警告。我使用Xcode监控内存,似乎内存使用量从1MB左右增加到65Mb,然后就在模型出现之前,内存立即增加到175MB左右。下面是我的代码。Ios6 在iPad中将fbx文件作为资产包加载-内存问题,ios6,ios7,unity3d,ipad-2,unityscript,Ios6,Ios7,Unity3d,Ipad 2,Unityscript,在我们的iPad应用程序中,我们需要加载fbx文件(大小为1MB-100MB)作为资产包。我开始测试一个26MB大小的fbx文件,它创建了一个17MB大小的资产包。当我运行测试场景在iPad中加载这个资产包时,它会在大约1分钟后加载。然后我得到一个记忆警告。我使用Xcode监控内存,似乎内存使用量从1MB左右增加到65Mb,然后就在模型出现之前,内存立即增加到175MB左右。下面是我的代码。 我曾看到其他用户发布过类似的问题。但是我在这些线程中都没有看到一个合适的解决方案。正如我在这些线程中所读
我曾看到其他用户发布过类似的问题。但是我在这些线程中都没有看到一个合适的解决方案。正如我在这些线程中所读到的,我认为在解压缩资产包时内存会增加。但我不明白为什么会达到170MB左右。
我们可以做些什么来减少内存使用?
谢谢
存储的文件大小通常比内存大小小得多。例如,任何PNG文件在内存中保存一次后,仍然会占用它将占用的空间,就好像它被保存为BMP一样。-类似地,模型占用的内存会更少,但一旦加载,所有纹理和其他特征都会被处理到内存中。尝试在ide中运行它,检查游戏的内存大小,而不是文件。谢谢。这不是一个真正的游戏应用程序。它只是一个fbx文件(25MB)添加到一个空场景中。没有别的了。当我在unity编辑器中加载模型时,在stats下我看到VRAM的使用显示为2.9MB到50.8MB。在iPad中,当它运行时,它的容量增加到70MB左右,然后在模型出现之前突然增加到170MB左右,然后回到117MB,并在加载后保持不变。
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)
}
}