(1):發佈webgl以後不能直接點(index.html)打開查看工程(火狐 和win10 Edge瀏覽器能夠直接打開),須要創建服務器經過服務器地址來訪問。
3:other settings設置web
和其餘平臺有些不同,值得注意的是這個"Strip Engine Code",剝離引擎代碼的選項。選中此選項後,Unity不包括不使用的任何類的代碼。例如,若是您不使用任何物理組件或功能,整個物理引擎將從您的構建中刪除。沒有音頻功能,unity會在封裝的時候去掉這部分代碼以減小大小。chrome
若是你的項目中使用到了資源包"AssetBundles"進行動態加載,要注意。若是你不想某些被剝離,請使用link.xml具體百度unity link.xml跨域
若是在項目以後,發現有以下錯誤 Could not produce class with ID XXX 說明有代碼被分離數組
文檔:https://docs.unity3d.com/Manual/IL2CPP-BytecodeStripping.html https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html瀏覽器
![](http://static.javashuo.com/static/loading.gif)
第二個方法是乾脆去掉剝離代碼的選項,可是構建體積會有所增大安全
4:publishing settings設置服務器
![](http://static.javashuo.com/static/loading.gif)
(1):是webgl可用內存大小的分配,單位是MB,網絡
建議在"64-512"之間,默認的是256,,這裏設置的值在封裝之後也能夠在發佈後index.html文件中修改,具體位置位於頁面底部的<script>標籤中
![](http://static.javashuo.com/static/loading.gif)
(2):參數"Enable Exceptions",用來異常捕獲開關,調試期間能夠打開,產品發佈的時候須要去掉。
共有三個選項
none:關閉
Explicitly Thrown Exceptions Only:默認選項,只處理腳本中throw部分的代碼,同時也會增大代碼體積。
Full:會捕獲全部的調試信息,除了代碼中的throw,還會將空的引用,非法索引數組,堆棧信息一同捕獲。
(3):壓縮方式 默認是gzip, 更佳的是Brotli可是須要更多的時間壓縮,這個方式只支持火狐和谷歌瀏覽器
5:注意方面
(1):
WebGL圖形 是一種用於在Web瀏覽器中渲染圖形的API,它基於OpenGL ES圖形庫的功能。 WebGL 1.0大體匹配OpenGL ES 2.0功能,WebGL 2.0大體匹配OpenGL ES 3.0功能。
(1):Unity WebGL僅支持烘焙GI。 WebGL目前不支持實時GI。此外,僅支持非定向光照貼圖。
(2):WebGL運行時不支持 Procedural Materials,在運行是會變成普通的材質(Procedural Materials好像是substance的一種材質,具體能夠查看文檔)
(3):不支持MovieTextures
官方有個Simple MovieTexture for Unity WebGL demo可是已經不見了,能夠用這個插件播放視頻,也能夠用avpro插件播放視頻
(4):WebGL不支持線性色彩空間渲染(WebGL does not support linear color space rendering)
(5):對shader也有限制(具體查看文檔)
(6):沒法訪問用戶機器上安裝的字體,全部在使用字體的時候要放到assets裏面
(7):支持抗鋸齒,在Quality Setting中啓用抗鋸齒功能
(8):反射探針在WebGL中獲得支持,但因爲WebGL規範中有關渲染到特定mipmap的限制,不支持平滑的實時反射探測器(所以實時反射探測器將始終產生尖銳的反射,這可能會顯示很是低的分辨率)
7:網絡方面
(1):因爲安全隱患,JavaScript代碼不能直接訪問IP套接字來實現網絡鏈接。所以,.NET網絡類(即System.Net命名空間中的全部內容,特別是System.Net.Sockets)在WebGL中是不起做用的。這一樣適用於Unity的舊UnityEngine.Network *類,這些類在構建WebGL時不可用 目前能夠選擇使用Unity中的WWW或UnityWebRequest類,或支持WebGL的新的UnityNetworking,或者使用JavaScript中的WebSockets或WebRTC實現您本身的網絡AssetsStore有個官方的WebSockets Demo
(2):使用WWW or WebRequest的訪問跨域資源施安全限制,使用WWW或UnityWebReqest訪問內容,而且遠程服務器沒有正確設置CORS,則在瀏覽器控制檯中將會看到以下錯誤信息:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myserver.com/. This can be fixed by moving the resource to the same domain or enabling CORS. 查看
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
(3):不要阻止www或者unitywwwrequest的下載,好比:while(!www.isDone) {}都是不被容許的 note:webgl是單線程 ,也就是說下載的時候你什麼都別動
(4):使用Networking.NetworkManager.useWebSockets.具體查看文檔
(5):在webgl中要使用使用套接字 須要使用webscoket和webRTC。webscoket官網有個簡單的例子
使用webRTC要注意有些侷限 文檔:both networking protocols supported by browsers. Web Sockets has wider support, but WebRTC allows p2p connections between browsers and unreliable connections. Neither of these protocols are exposed through built-in APIs in Unity yet, but it is possible to use a
JavaScript plugin to implement this.
8:Audio方面
9:性能方面
(1):在質量設置中設置爲fastest捕捉異常設置爲none
(2):能夠設置爲Application.runInBackground However, it should be noted that browsers may throttle content running in background tabs. If thetab with your content is not visible, your content will only be updated once a second in most browsers. Note that this will cause Time.time toprogress slower than usual with the default settings, as the default value of Time.maximumDeltaTime is lower than one second.
(3):能夠使用Application.targetFrameRate API來限制幀速率。
10:內存方面
11:與網頁js代碼交互
在js中調用untiy代碼使用SendMessage ('MyGameObject', 'MyFunction', 'foobar');(物體,函數,參數)
(2):使用js插件,在你的unity中(跟其餘本身編寫插件同樣)Assets/Plugins/WebGL/MyPlugin.jslib,注意後綴名是jslib
http://blog.csdn.net/llddyy123wq/article/details/5620466
12:網頁模板
13: input方面的支持
(1):Gamepad and Joystick support
(2):Touch support
(3):Keyboard input
說一下關於有些碰到 unity InputFiled不能輸入中文的問題 能夠在AssetsStore有個官方的IME Input for Unity Demo
最後附上一張WebGL Browser Compatibility圖片
14 :字體