Unity5.3.3 webgl 注意


瀏覽器支持:

Mozilla Firefox 42,Google Chrome 46,Apple Safari 9.0,MS Internet Explorer 11,MS Edge 13

Safari不支持全屏

Chrome需要大量內存解析js代碼,可能導致內存不足

IE11號稱支持,但是太慢,導致webgl基本不可用

 

減小發布包的大小

嘗試發布空場景,發布文件的全部大小接近6M。。太大了。其中js代碼文件xxx.jsgz4.6M。。

優化png文件之類手段並不能減少發布包大小,因為unity最后實際使用的是自己的內部格式。

刪除沒用的資源也不行

使用Asset Bundle,而不是Resource,可以減少首次下載包的大小。這些其實web player時代就已經是這樣了。

打包Asset Bundle的時候使用LZ4壓縮格式。webgl不支持多線程,lzma壓縮的bundle會導致主線程解壓縮時的卡頓。

使用紋理壓縮(DXT(Desktop platforms) or PVRTC),在webgl中使用Crunch壓縮選項。壓縮網格(mesh)和動畫(Animation)

不要引用System.dllSystem.Xml.dll,盡量少用第三方dll

盡量只用.Net 2.0 subset API

設置Edit > Project Settings > Player > Other Settings中的Strip Engine Code為選中,不發布無用的代碼。在使用asset bundle的時候,選中此項可能會導致有些用戶代碼被跳過,從而在加載asset bundle的時候出現Could not produce class with ID XXX的錯誤。可以在項目中增加link.xml文件,強制unity包含指定類。如下:

<linker>
    <assembly fullname="UnityEngine">
        <type fullname="UnityEngine.Collider" preserve="all"/>
    </assembly>
</linker>

設置Edit > Project Settings > Player > Publishing Settings 中的Enable Exceptions popup為None,如果不需要處理異常。

設置memory size為合適的大小

在發布對話框中設置優化等級為fastest

正確配置web服務器,在 http 協議層使用gzip壓縮

 

其他

webgl不支持movietexture,可以用HTML5 video element實現

wengl對GLSLS shader的限制比OpenGL ES 2.0更多

webgl不支持使用用戶本地字體,字體必須包含在unity項目中

webgl不支持IP socket,包括C#的Socket庫和UnityEngine.Network。可以用WWW。unity提供一套支持webgl的網絡API,也可以用javascript的websockets自己實現。

webgl對unity音頻API有大量限制

在大部分瀏覽器中,webgl后台運行時的更新頻率會下降到每秒一次

wengl中,gc(垃圾回收)只能在每幀結束后進行,因此下面的代碼會導致內存耗盡:

string hugeString = "";
for (int i = 0; i < 100000; i++)
{
    hugeString += "foo";
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM