WebGL開發入門
什么是Unity WebGL?
可以使用Unity的WebGL構建選項將內容以JavaScript程序發布,這當中使用了HTML5技術和WebGL渲染接口API以在瀏覽器中運行Unity內容。在Build Player窗口中選擇WebGL構建目標,然后點擊Build & Run,就能以WebGL形式構建並測試你的內容。
技術概覽
要在WebGL中運行,所有代碼必須是JavaScript。我們使用emscripten編譯工具鏈將Unity運行時代碼(用C和C++編寫)跨平台編譯成asm.js JavaScript。asm.js是JavaScript的一個很可優化的子集,允許JavaScipt引擎將asm.js代碼AOT編譯成非常高效的原生代碼。
為將.NET游戲代碼(你的C#和UnityScript腳本)轉換成JavaScript,我們使用了稱為IL2CPP的技術。IL2CPP提取.NET字節碼並將其轉換成相對應的C++源文件,接着使用emscripten技術編譯這些文件,將你的腳本轉換成JavaScript。
平台支持
大多數主流瀏覽器的當前版本都支持Unity WebGL內容,然而不同瀏覽器的支持程度不一樣。Unity WebGL不支持移動設備。
WebGL構建里並不包含Unity的所有內容,這主要因為平台的限制。具體來說是以下幾點:
· 構建的WebGL內容不支持多線程,這是由於JavaScript本身就缺乏多線程的支持。其中包括Unity內部為提高性能所用的多線程,以及腳本代碼和托管dll里使用的多線程。基本上,System.Threading
命名空間里的所有內容都不被支持。
· 在MonoDevelop或Visual Studio中WebGL構建不能被調試。詳見:WebGL構建調試及疑難解答。
· 出於安全起見,瀏覽器不允許在網絡編程里直接訪問IP套接字。詳見:WebGL網絡編程。
· WebGL圖形接口API相當於OpenGL ES2.0,其有很多限制。詳見:WebGL圖形技術。
· 基於Web Audio接口API ,WebGL構建為音頻使用自定義的后台技術,其只支持基本的音頻特性。詳見:在WebGL中使用音頻。
· WebGL是一個AOT平台,因此它不支持使用System.Reflection.Emit
動態創建代碼。在所有其他IL2CPP平台、iOS和大多數控制台上也是不支持的。