1.強烈建議不使用Resource.Load,理由如下:
1.使用Resources文件夾使得內存管理更加困難。
2.隨著Resources文件夾的增多,管理里面的Assets變得困難。
3.Resources系統降低了發布平臺獨立的定制內容的能力,并且使得增量內容更新變得不可能。
4.AssetBundle變量是unity的發布針對不同設備可定制內容的主要工具。
5.打包的時候會遍歷所有res目錄下,創建資源索引信息,會增加打包時間
6.進入app的時候 會加載所有res目錄下索引信息,會增加加載時間
例外:
1.Resources系統非常適于快速開發原型和實驗,因為他非常簡單易用。當項目推進到完整產品時,強烈建議排除掉Resources文件夾。
2.Resources文件夾適合一些瑣碎的資源,比如Resources文件夾里面的資源都是很小,或者整個項目生命周期都需要。這些內容都不需要打補丁。也即跨平臺和設備時都不會變化。
適合第二種情況的例子比如有全局用的預制品,上面掛載一些單例MonoBehaviour腳本。或者是第三方配置資源,比如FaceBook App ID。
2.AssetBundle建議使用LoadFromFile,不建議使用LoadFromMemoryAsync
1.因為FromMemory這個api至少需要兩倍的AssetBundle的尺寸內存。從AssetBundle里面加載的Asset會在內存里面拷貝3次:一次托管字節數組,一次本地內存拷貝還有一次就是Asset自身子啊GPU或者系統內存占用。
2.FromFile如果是加載一個未壓縮的AssetBundle,這api十分高效。如果是未壓縮或者LZ4壓縮,api行為如下:
移動設備上API只加載頭信息。只要在Load一個Object才會去加載特定的對象。不會浪費別的內存。
在編輯器里面會加載整個AssetBundle進內存。