unity 版本是5.5,不过看了2017的文档好像也是差不多,绝大部分都是根据官方文档,希望有帮助,如果有错误或者你知道更多这方面的只是,请告知下,大恩言谢。
1:对webgl发布的工程文件说明
在release文件夹中,如果你使用了gzip压缩,那么你的文件后面会有个.gz
2:如何在pc上面运行webgl
(1):发布webgl之后不能直接点(index.html)打开查看工程(火狐 和win10 Edge浏览器可以直接打开),需要建立服务器通过服务器地址来访问。
(2):但是在chrome浏览器中可以使用命令行启动来打开,然后在
打开的浏览器网页中通过地址来打开webgl




(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插件播放视频
(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的新的Unity
Networking
,或者使用JavaScript中的WebSockets或WebRTC实现您自己的网络
AssetsStore有个官方的WebSockets Demo
(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默认的字体 ,必须在项目文件中包含一个字体文件