Unity 釋出WebGL的一些技巧
首先還是構建選項,在"Player Settings"裡。
Resolution and Presentation和老的web player沒啥變化,你可以把你自制的模板放到
"\Unity\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates"目錄裡面,具體用法以後慢慢填坑。
other settings,其他設定中,和其他平臺有些不一樣,值得注意的是這個"Strip Engine Code",剝離引擎程式碼的選項。
官方文件是這樣描述它的"如果被選中,unity會預設剝離在專案中不會使用的元件",也就是說,假如你的專案中沒有音訊功能,unity會在封裝的時候去掉這部分程式碼以減少大小。
乍一聽感覺,哎喲,不錯哦!其實unity預設也是勾選這個選項的,但是如果你的專案中使用到了資源包"AssetBundles"進行動態載入,就有可能掉進坑裡。
因為程式碼被剝離了,到時候在網頁上一跑,F12開啟除錯就能看到滿面紅光。
這時候有2個辦法,一個是在工程檔案目錄中,建一個link.xml檔案,內容如下
"UnityEngine.Collider"就是要引用的class,引用其他的UnityEngine.UI....以此類推
點選這裡,轉到官方link.xml的解釋文件
<linker> <assembly fullname="UnityEngine"> <type fullname="UnityEngine.Collider" preserve="all"/> </assembly> </linker>
將檔案儲存到unity工程的Assets資料夾中
第二個方法是乾脆去掉剝離程式碼的選項,構建體積會有所增大,但如果上面方法沒能解決問題,這或許是最後的辦法。
接著來到"publishing settings",釋出設定,在我當前版本unity5.4中,只留下了三個選項
第一個是webgl可用記憶體大小的分配,單位是MB,如果太小執行一陣子會出現記憶體溢位的錯誤警告,設定太多也不合適,記憶體吃緊的機器上估計就gameover了
個人建議在"64-512"之間,預設的是256,其實簡單的專案已經足夠使用了,這裡設定的值在封裝以後也可以在index.html檔案中修改,具體位置位於頁面底部的<script>標籤中
單位是位元組(b),因為webgl構建速度很慢,如果要對這個引數進行調整,可以直接修改頁面,省去了大把人蔘。
<script type='text/javascript'>
var Module = {
TOTAL_MEMORY: 268435456, //這個就是可用記憶體大小
errorhandler: null,
compatibilitycheck: null,
dataUrl: "/Release/..",
codeUrl: "/Release/..",
memUrl: "/Release/..",
};
</script>
第二個引數"Enable Exceptions",也就是異常捕獲的一個開關,除錯期間可以開啟,最終產品釋出的時候需要去掉。
共有三個選項
none:關閉
Explicitly Thrown Exceptions Only:也就是預設選項,只處理指令碼中throw部分的程式碼,同時也會增大程式碼體積。
Full:顧名思義,會捕獲所有的除錯資訊,官方文件說,除了程式碼中的throw,還會將空的引用,非法索引陣列,堆疊資訊一同捕獲。