基于Unity5.x版本资源内存管理方案

1、Unity对资源的管理API汇总:

Resources:Load、LoadAll、LoadAsync、UnloadAsset、UnloadUnusedAssets。

AssetBundle:LoadFromFile、LoadFromFileAsync、LoadFromMemory、LoadFromMemoryAsync、LoadAllAssets、LoadAllAssetsAsync、LoadAsset、LoadAssetAsync、Unload(true/false)。

GameObject:Instantiate、Destroy、DestroyImmediate。

以上API是Unity5.x下几乎所有的对内存资源管理的接口,所有的内存管理方案也几乎都是用以上接口实现的。

2、文件的加载方式:

对Resource内文件的加载:Resources.Load、Resources.LoadAll、Resources.LoadAsync

支持包内加载的同步加载方式:AssetBundle.LoadFromeFile

常用的同步加载方式:AssetBundle.LoadFromFile、File.Open

常用的异步方式(都支持包内):AssetBundle.LoadFromFileAsync、new www、www.LoadFromCacheOrDownload

3、对比几种加载assetbundle方式:

对于new www这种加载资源文件的方式,其优点是不会受到ios平台256文件句柄的限制,而其缺点是这种方式加载资源后所占的内存要比其他方式高。而对于www.LoadFromCacheOrDownload这种方式,其加载后所占内存会比较低,在内存中是以SerializeFile的格式存在,但其会受到ios平台256文件句柄上限的限制。不过在unity5.3之后,AssetBundle.LoadFromFileAsync和www.LoadFromCacheOrDownload如果超过句柄上限会自动转成new www的方式加载。

4、AssetBundle加载入内存后的状态图:

基于Unity5.x版本资源内存管理方案_第1张图片


你可能感兴趣的:(Unity3D,unity,内存管理)