Unity3D游戲不管從畫面還是技能來看,都給予玩家強烈的視覺享受,因此受到眾多玩家的青睞。unity3D游戲如何加快冷啟動時間,粵嵌簡單為你介紹一下。
相比于Android或者iOS原生App,Unity3D引擎開發的游戲在冷啟動時間上確實比較長。三星SM-N9008手機上的測試結果是一個不算大的項目,如果使用Mono后端編譯,則需要10秒左右的冷啟動時間,而如果使用IL2CPP后端編譯,則冷啟動時間為7秒左右。
IL2CPP相比于Mono確實能夠加快冷啟動時間,這是可以預期的。因為在Mono編譯的情況下,每個.cs文件都是一個TextAsset文件,而所有的.cs文件都需要在冷啟動時候全部加載到內存中,這些碎片化的文件加載操作都會占用冷啟動時間。關于冷啟動需要加載哪些文件的分析,可以參考Unity3D游戲在啟動時都默認加載哪些資源。而IL2CPP會把所有的C#代碼編譯成C 代碼,然后再進行編譯、鏈接等操作,這樣就減少了C#、DLL所帶來的開銷。
在項目中我們應該怎樣加快游戲的冷啟動速度呢?總結出以下幾個優化的要點:
項目中添加一個Loading場景,這個場景會是游戲啟動的個場景。
在Loading場景中盡量少的依賴,盡量少的紋理依賴、AssetBundle依賴、代碼依賴,總之,這個Loading場景一定要盡量少的依賴,這個場景一定要盡量簡單,這樣才能保證盡快的加載速度。
在游戲中盡量少的使用Resources方式管理資源,Resources目錄下面的所有資源會在ResourceManager中記錄下來,而ResourceManager就是一個文件,通常是一個YAML格式的文本文件。而這個文件是會在冷啟動時加載的。所以Resources目錄下面的有越多的資源,那么這個ResourceManager就會越大,加載時間也會越長。
使用Resources方式管理資源還有一個壞處,就是所有的資源都是統一管理的,這樣的資源的管理粒度沒辦法控制。建議使用AssetBundle的方式管理,這樣可以使用多個AssetBundle來管理資源。把在Loading場景中需要的小資源集放在一個AssetBundle中,這樣在冷啟動時啟動Loading場景時,只需要加載一個AssetBundle即可。選擇合適的粒度管理AssetBundle,可以在合適的時候加載某一個AssetBundle,不使用時就可以卸載某一個AssetBundle。
在Loading場景中,添加一個進度條,然后同步加載進入主場景所需要的AssetBundle,這樣用戶就不會感到等待時間太煩躁了。同步加載要比異步加載時間更短。
紋理資源在游戲中一般是的資源,選擇合適的壓縮格式進行壓縮,既可以減少內存占用,又能夠加快資源的加載速度。壓縮格式的選擇要從顯示效果和壓縮率上進行權衡。一般在Android上使用ETC格式,在iOS上使用PVRTC格式,在某些情況下,可能還可以考慮使用Alpha通道分離技術進行壓縮處理。
代碼文件可以編譯成.dll文件,減少大量TextAsset文件導致的碎片化加載時間。
強烈建議使用IL2CPP后端,如果使用IL2CPP,則可以忽略上面這一條。
對于unity3D游戲如何加快冷啟動時間,相信大家已經知曉了,粵嵌教育有提供unity3D開發一系列教程和資源,幫你以快速的方式實現游戲開發的夢想!