赞
踩
unity开发网页游戏,发布的时候可以选择web player跟webGL。unity5.4版本以后发布只能选择webGL,web player能用的最高版本是5.3.8。两者比较如下:
unity网页游戏网站:http://www.pacogames.com/en
在chrome继续使用web player,参考:http://www.gameload.top/
http://www.gameflare.com/news/article/how-to-run-unity-games/
chrome历史版本下载:http://www.chromedownloads.net/chrome64win/
查看chrome版本:chrome://version/ 或者点击 帮助->关于google chrome
chrome44版本及以下版本可以运行web player,设置:浏览器里输入 chrome://flags/#enable-npapi ,启用NPAPI,重启浏览器,安装web player插件,启用web player插件
[官方]在WebGL 平台上的Unity 性能基准 http://forum.china.unity3d.com/thread-681-1-1.html
[官方] Unity 5.3 中WebGL的更新 http://forum.china.unity3d.com/thread-12832-1-1.html
如果选择webGl,那么网络socket要选择webSocket,unity中带System.Net相关socket都不能用,只能用webSocket相关的库(需下载),同时服务器中需要相应的解析webSocket,先握手后才能用socket进行通信。web player则没有这个限制,socket正常使用。下面就web player的开发与发布部署,说下相关内容。
1.在调用connect之前,先调用 Security.PrefetchSocketPolicy(ip, 843, 3000)。这是Unity WebPlayer Security SandBox机制,Unity3d为Web Player平台搞了一个security SandBox机制,Only在Web Player的安全机制中,在使用Socket时需要服务器配置一个服务安全策略。如果没有这方面处理,Security SandBox会阻止程序的Socket连接,导致不能通信。
Unity提供了一个“sockpol.exe”这么一个工具,在“...\Unity\Editor\Data\Tools\SocketPolicyServer“路径下有sockpol.exe和它的源码。如果你的服务器端是Windows平台的话,直接Copy一个sockpol.exe到服务器端,在CMD中执行
cd D:\softinstalled\unity5.3.8\Unity\Editor\Data\Tools\SocketPolicyServer
sockpol --all
即可为服务器端配置好Security SandBox安全策略。
sockpol.exe干的活就是监听Web Player平台获取Security SandBox安全策略时需要连接服务器端的843端口,监听到843端口有请求时,发送给请求的客户端一个crossdomain.xml配置,内容为标准的crossdomain.xml文件格式:
- <?xml version="1.0"?>
- <cross-domain-policy>
- <allow-access-from domain="*" to-ports="1-65536"/>
- </cross-domain-policy>
这样客户端就能获取到Security SandBox安全策略并进行网络活动了。其中,执行sockpol.exe的参数--all的意义就是设置服务器的Security SandBox安全策略为允许任何IP访问服务器的任何端口。
如果是linux服务器,写一个脚本:
- #!/bin/sh
- while true; do echo '<?xml version="1.0"?>
- <cross-domain-policy>
- <allow-access-from domain="*" to-ports="1-65536"/>
- </cross-domain-policy>' | nc -l 843; done
保存为serverPolicy.sh。然后让脚本在后台运行:
nohup shserverPolicy.sh
nohup命令会忽略SIGHUP信号,从而终端退出时不会影响到后台作业。然后启动其他游戏服务器进程
2.搭建IIS,外部通过IP直接访问。web服搭建在windows上,游戏服在linux上。发布的web player游戏的html改为index.xml,增加MIME扩展名为.unity3d,类型为 application/octet-stream
3.网页上查看游戏运行日志。On Windows 7 the debug log is located at C:\Users*Your User Name Here*\AppData\Local\Temp\UnityWebPlayer\log
在浏览器中调试Unity web player的方法:按住 ALT键,然后点击右键 - Release Channel - Dev
4.如果需求要是有POST请求返回数据,则要在IIS下web.config中添加
5.html中查看浏览器版本的方法:
<script>
document.write("用户代理: " + navigator.userAgent);
</script>
判断chrome版本的方法:
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.0.8/jquery.browser.min.js"></script>
- <script>
- $(document).ready(function(){
-
- var ver = navigator.userAgent;//获取用户端的Web浏览器版本号
- var a= ver.indexOf("Chrome");//检测特殊字符串"MSIE"的位置
- var versionNum = parseFloat(ver.substring(a+7,a+9));
-
- var isChrome = navigator.userAgent.toLowerCase().match(/chrome/) != null;
- if (isChrome && versionNum >= 45) { //detect Chrome 45+
-
- var myJsonString = JSON.stringify({ title: 'Three', file: 'http://192.168.6.107:8086/webplayer0710.unity3d', type: "unity", width: 800, height: 600 });
- try{ //IE8 does not support window.btoa
- var insert_data = window.btoa(myJsonString);
- }catch(e){
- functionToHandleError(e);
- }
-
-
- document.write('<center><a href="gameload://' + insert_data + '/"><img alt="Play game with Gameload!" src="http://data.gameload.top/download/playgameload.png" /></a><br /><br />Install Gameload to play Unity games<br /><a href="http://data.gameload.top/download/gameload.exe" title="Install Gameload now!"><img alt="Install Gameload now!" src="http://data.gameload.top/download/getgameload.png" /></a></center>');
- }
- });
- </script>
6.web player游戏下载美术资源失败,需要IIS中的 MIME类型添加相应后缀
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。