如何改進Unity3d手游啟動速度?

背景:

1,Unity3D 5.5.x,SLG類型手游,第一個場景是Login,場景內容相關代碼初始化應該不算多。

2,Android測過; IOS沒有測試過.

過程:

生成apk後,安裝到手機上,點擊app icon運行,這時會黑屏一陣子(對我們的遊戲來說黑屏了相當久,5秒以上吧,華為p9),然後u3d的logo出來,過一段時間logo消失,然後進入遊戲場景。

我想了解的幾個問題是:

1,黑屏的時候在幹什麼,如何減少這個黑屏的時間(比如Resrources里塞太多東西是否會對此有影響等等)。

2,如何解決?指解決用戶黑屏太久體驗差的問題。

搜過相關內容,其中一個做法是導出Android工程,然後在u3d Activity的基礎上自己加一些內容,大體上就是先自己畫個界面出來(基於Android sdk),然後初始化u3d,直到u3d初始化完畢,並且u3d自己的logo也顯示完畢(此間屏幕上顯示的都是之前自己繪製的界面,覆蓋了u3d顯示的內容),此時關閉自己的界面,顯示遊戲場景。這種做法是業內常規做法嗎? IOS上也(可)用等效做法嗎?

3,u3d收費版提供了一個自定義啟動畫面的功能,這個功能是否僅僅只是替換黑屏後的u3d logo為自定義畫面?

4,官方為啥不提供某個全平台統一的方式來達到:點擊app icon -&> 快速啟動某個用戶自定義界面 -&> 引擎初始化,第一個遊戲場景載入(此過程耗時不定) -&> 載入完成後通知用戶,關掉啟動界面,顯示遊戲場景。


1. 黑屏的時候在幹什麼?

開始黑屏的時候在載入資源。先是 Unity Player 的內核,然後再到你遊戲里的資源。Resrources里塞太多東西會對載入速度有影響。解決的辦法是通過代碼實現動態載入。

2. 這種做法是業內常規做法嗎?

Yes。

當然優化的方法還有很多種,譬如壓縮貼圖,合併模型,預載入場景等等。

3. 自定義啟動畫面的功能是否僅僅只是替換黑屏後的u3d logo為自定義畫面?

是的。

4. 官方為啥不提供某個全平台統一的方式來達到......?

這些功能需要開發者自己寫程序來實現。

因為開發者的需求多種多樣,引擎一般不會提供太多傻瓜式的一體化方案。

Unity3D引擎編譯出來的遊戲,安裝包都偏大,在移動設備上的載入速度確實是偏慢的,但還沒有慢到令人無法接受的程度。針對不同類型的遊戲,有各種不同的優化方案,相關資料題主可以自行去搜索了解,在這裡沒辦法一一說清楚。

題主應該是拿現成的項目代碼修改的吧,對代碼的內容還沒完全理解,所以才會有這麼多問題。你先把項目的代碼弄清楚,build 的時候看一下 Editor Log,找到體積大的資源,同時藉助 Profiler 來逐步優化。實在優化不了就放一邊,不要死扣性能問題,遊戲能正常穩定運行才是最重要的。

-


看看always include shaders 有沒有放了自定義shader進去


不要往resources里塞東西,官方也不建議這樣做,改成asset bundle。


推薦閱讀:

如何看待觸樂網這篇關於少女前線的文章?
單機遊戲開始時,為何總會先讓玩家按下任意鍵,才進入主菜單畫面?
Unreal Engine 4 基於什麼考慮把 UnrealScript 替換掉而改用 C++ 開發遊戲邏輯?
在三年內如何通過自學Unity3d找到工作?
unity3d書籍及免費教程推薦?

TAG:遊戲開發 | 手機遊戲 | Unity遊戲引擎 |