首先要知道編譯流程
一.大致編譯流程
c# -> 通過IL2CPP技術轉換成c++ -> 使用 Emscripten編譯器進行編譯將腳本轉換為JavaScript(但不是普通的 JS,而是一種叫做 asm.js的 JavaScript 變體)
二.Unity打包webgl局限
1. 不支持多執行緒
JS為單執行緒,所以代碼中避免使用C#的多執行緒(托管的 dll中使用執行緒也不支持),實質上不支持System.Threading命名空間中的任何內容;可以用協程,
2. Socket限制
由于安全限制,System.Net.Sockets在 WebGL 中不起作用;官方建議使用Unity中的WWW或UnityWebRequest類或使用支持 WebGL 的新型Unity 網路功能,或者使用 JavaScript 中的 WebSockets 或 WebRTC 來實作您自己的網路,(后端建議為RSA證書,ECC證書可能會出錯)
3. 不完全支持WebGL
https://docs.unity.cn/cn/2021.1/Manual/webgl-graphics.html
4. WebGL音頻限制
https://docs.unity.cn/cn/2021.1/Manual/webgl-audio.html
三.Unity打包webgl性能優化
1. 將資源和應用分離實作應用的快速啟動
建議分場景打包(要注意的一點就是IL2CPP編譯時代碼剝離的問題),通過unity 的addressable 和 CCD服務(可以避免跨域問題),實作加速,
2.減少記憶體使用(任何不是16的倍數的值都將被自動四舍五入(在運行時)為下一個16的倍數,這是Emscripten編譯器所要求的,官方建議保持在512MB一下)
2.1 減小 Unity Heap 的大小:保持“WebGL 記憶體大小”盡可能小;
2.2 減少代碼大小:
啟用剝離引擎代碼;
禁用例外;
盡量避免使用第 3 方插件;
2.3減少資料大小:
使用資產包;
使用 Crunch 紋理壓縮;
https://mp.weixin.qq.com/s/X5cUCFhHOA_LtS9k0i-Csw
https://blog.unity.com/technology/understanding-memory-in-unity-webgl
3.








三.性能優化工具:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/290452.html
標籤:其他
上一篇:構建jQuery框架封裝 nextAll 和 prevAll 方法!!!!(超級篇!)
下一篇:15-操作DOM物件
