記錄Unity出Web包遇到的問題


3樓貓 發佈時間:2023-10-30 14:32:31 作者:風小水 Language

本次Booom比賽中,機核開啟了上傳Web版遊戲的功能,於是我們項目出包的時候,我就嘗試了一下出web包。
因為《魔女破天輪》這個項目直接拿的GameFramework的框架來用,遇到的問題和解決方案都是基於GF的。
首先一開始我使用Unity直出Web包,發現遊戲出來運行直接報錯,獲取不到AB資源。一定是資源有問題,但問題在哪呢。
後面不斷查資料和研究,發現web包是掛在服務器上運行。這樣其實是沒有文件系統的。通常我們在電腦/手機上的加載ab資源都是依賴文件夾系統的路徑作為一種URL來使用。
所以如果根據路徑去索引資源,其實是找不到StreamingAssets這個文件夾的。
一度我以為GF不支持WebGL,不過在GF官方網站說是支持Web只是沒有經過測試,但是有人成功了。這次才讓人重燃希望。
其實解決這個問題的方法沒多複雜,反而可以說很簡單。
主要在於打ab包的包體設置上。GF在打AB包之前,ResourceCollection.xml文件可以設置包體的加載類型(LoadType="0")。
默認0就是指【從文件系統中加載】。這時只需要我們把加載方式修改為【從內存中加載】,即LoadType="1"。
當然也可以在編輯器窗口中修改,但不推薦。一個一個去設置真的麻煩,不如ResourceCollection中直接批量修改。
設置好ResourceCollection.xml之後,我們就可以打Web專用的AB包了。
之後我們照常把ab包放到StreamingAssets這個文件夾,正常出Web包就完成辣。
但是我一出包運行,還是有報錯。
但是這次的問題非常弔詭。Animation資源加載不到。這是什麼情況?我反覆比對了一下,不應該啊,同一個包體中的其它資源都能加載,只有Animation加載不了。怎麼還有能加載都只加載一半的情況嗎。
經過整整一天的反覆打包測試和查找資料。終於在外國論壇的一個遠古帖子上發現的端倪。
其實問題並不出在打包,而在出包設置上。在Unity的項目設置中有一個叫做"代碼剝離"這麼個東西。(更加早期的Unity版本可能會直接叫"Code Stripping")
出包的時候,會根據你的這個剝離等級,來進行一定層度對你項目中代碼或者資源進行切割,不進入出包。
這個功能據反饋剝離並不準確,會導致剝離一些需要的代碼和資源。
我嘗試直接禁用之後,一個完美運行web包就出來了。
記錄一下困擾了很久的問題,並且為未來參加機核GameJam比賽的朋友們,提供一點微小的幫助。

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com