unity客戶端載入體驗優化解決過程記錄

最近運營組提了優化建議,說進入遊戲時感覺很卡頓,進入遊戲的整個loading過程中會出現3次明顯的卡頓,不順暢,體驗很不舒服,同時找了幾個競品遊戲做對比,發現我們的遊戲確實加載體驗不好,遂開始着手分析是哪裏出了問題.

  • 1.第一直覺是美術資源加載的問題,資源加載是卡主線程的,肯定會出現畫面卡頓.於是我從啓動函數開始梳理,直到卡頓的地方,發現還沒到加載美術資源的地方就已經卡了,繼續

  • 2.發現運行第一個lua腳本的地方會出現明顯卡頓,於是開始分析這個lua腳本做了什麼邏輯,一行一行進行註釋,調試,最後只剩一個空表了,發現還是卡,繼續

  • 3.發現在第一個lua腳本運行之前會加載所有的lua bundle文件,這一步會導致主線程卡住1~2秒的時間,到這裏算是找到了第1個卡頓的原因

  • 4.繼續排查,找到了第2個卡頓的原因,在遊戲加載的過程中會對多語言,遊戲配置文件等大量的lua文件進行require,這一步也會卡住主線程1秒左右.

  • 5.最後一次卡頓是出現在美術資源預加載的地方,比如大地圖,主界面UI等

至此,3處卡頓的點和原因都已經知道了,接下來就是分析解決方案了.

通過對競品遊戲的分析,發現我們遊戲啓動時的splash閃屏時間比它們要短很多,尤其在ios上,幾乎是一閃而過,而競品遊戲會在splash界面停留2~3秒的時間,難道它們是在這裏處理上述卡點的?很有可能,於是我調整了加載lua bundle資源,lua require,預加載美術資源的觸發點,由原來的分佈式執行統一改到場景初始化中去,目前unity對splash界面的顯示原理取決於啓動場景的初始化時間,啓動場景什麼時候初始化完畢,splash什麼時候消失,只要能保證在初始化場景時阻塞調用上述三個卡點邏輯,就能保證在splash消失時所有耗時的邏輯已經執行完畢了.
在這裏插入圖片描述

優點:splash消失後,從loading界面開始到看到主城,都比較順暢,對於玩家來說體驗很舒服
缺點:splash的時間變長了

目前優化後,從運營和玩家那裏得到的反饋都是正向的.

我們項目是基於tolua的,在遊戲啓動時即加載lua bundle和lua require跨過了熱更流程,有點違背熱更的設計意圖,因此目前我們的解決方案是:

  • 1.在啓動遊戲時第一時間加載lua bundle和lua require
  • 2.如果有觸發熱更,則在熱更完畢後重新加載一次啓動場景,同時重啓lua虛擬機,通過這次重啓機制,重新再加載一次更新後的lua bunlde和 lua require

相對於原來熱更完畢可以直接進入遊戲的方案,現在的方案會多一次重載,不過考慮到正常進入遊戲和觸發熱更後進入遊戲的機率佔比,目前的方案是完全可以接受的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章