Unity發佈WebGl注意事項

unity 版本是5.5,不過看了2017的文檔好像也是差很少,絕大部分都是根據官方文檔,但願有幫助,若是有錯誤或者你知道更多這方面的只是,請告知下,大恩言謝。html

1:對webgl發佈的工程文件說明node

    
在release文件夾中,若是你使用了gzip壓縮,那麼你的文件後面會有個.gz
2:如何在pc上面運行webgl

 

   (1):發佈webgl以後不能直接點(index.html)打開查看工程(火狐 和win10 Edge瀏覽器能夠直接打開),須要創建服務器經過服務器地址來訪問。
    (2):可是在chrome瀏覽器中能夠使用命令行啓動來打開,而後在打開的瀏覽器網頁中經過地址來打開webgl
 

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瀏覽器

       

 第二個方法是乾脆去掉剝離代碼的選項,可是構建體積會有所增大安全

 

4:publishing settings設置服務器

(1):是webgl可用內存大小的分配,單位是MB,網絡

   建議在"64-512"之間,默認的是256,,這裏設置的值在封裝之後也能夠在發佈後index.html文件中修改,具體位置位於頁面底部的<script>標籤中

(2):參數"Enable Exceptions",用來異常捕獲開關,調試期間能夠打開,產品發佈的時候須要去掉。

        共有三個選項

        none:關閉

        Explicitly Thrown Exceptions Only:默認選項,只處理腳本中throw部分的代碼,同時也會增大代碼體積。

        Full:會捕獲全部的調試信息,除了代碼中的throw,還會將空的引用,非法索引數組,堆棧信息一同捕獲。

 

(3):壓縮方式 默認是gzip, 更佳的是Brotli可是須要更多的時間壓縮,這個方式只支持火狐和谷歌瀏覽器

5:注意方面

(1):

(2):使用assetBundle的一些貼士
(3):若是要修改發佈的文件相對於index.html的位置,要打開index.html修改相應Uri的路徑,也能夠放在相應的uri網絡地址
        
 
(4):WebGL沒法使用monodevelop 或者vs來調試 可是能夠使用debug來打印到的瀏覽器的控制檯
6:WebGL圖形方面

 


         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插件播放視頻
      http://renderheads.com/product/avpro-video/ 裏面有個demo和unitypackage
(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代碼交互

 

 
 (1):webgl調用js代碼能夠使用  Application.ExternalCall() and  Application.ExternalEval()
         在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 :字體

            不能使用unity默認的字體 ,必須在項目文件中包含一個字體文件
相關文章
相關標籤/搜索