最近在接觸unity的WebGL平臺,其實這個平臺做爲Web Player的替代品,已經能知足大部分的開發需求,並且不須要額外的插件支持,確實方便了很多,但開發中依舊遇到了很多問題,在這裏記錄和共享一下解決方法。javascript
首先仍是構建選項,在"Player Settings"裏。html
Resolution and Presentation和老的web player沒啥變化,你能夠把你自制的模板放到java
"\Unity\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates"目錄裏面,具體用法之後慢慢填坑。web
other settings,其餘設置中,和其餘平臺有些不同,值得注意的是這個"Strip Engine Code",剝離引擎代碼的選項。數組
官方文檔是這樣描述它的"若是被選中,unity會默認剝離在項目中不會使用的組件",也就是說,假如你的項目中沒有音頻功能,unity會在封裝的時候去掉這部分代碼以減小大小。iphone
乍一聽感受,哎喲,不錯哦!其實unity默認也是勾選這個選項的,可是若是你的項目中使用到了資源包"AssetBundles"進行動態加載,就有可能掉進坑裏。ide
由於代碼被剝離了,到時候在網頁上一跑,F12打開調試就能看到滿面紅光。webgl
這時候有2個辦法,一個是在工程文件目錄中,建一個link.xml文件,內容以下ui
"UnityEngine.Collider"就是要引用的class,引用其餘的UnityEngine.UI....以此類推spa
點擊這裏,轉到官方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,還會將空的引用,非法索引數組,堆棧信息一同捕獲。
至此,已經簡單介紹了一下發佈設置的一些細節,關於webgl,因爲國內文檔較少,我也會繼續拋磚引玉,有更好的想法歡迎留言交流。