欢迎来到天天文库
浏览记录
ID:47068274
大小:32.00 KB
页数:4页
时间:2019-07-14
《Unity3d 游戏开发之Web Player 的server端联网配置》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Unity3d游戏开发之WebPlayer的server端联网配置 新游戏出了第一个能跑完流程的版本,不得不佩服Unity3D强大的功力,PC、MACOS、Linux、IOS、Android、webplayer,前天刚发布的unity3d4.2版本还支持WINDOWSPHONE、BlackBarry这些平台统统一键打包,soeasy!不过在打包部署WebPlayer时,在联网方面出现了一点麻烦,算是顺风顺水过程当中的一个小插曲吧!所以又可以针对Unity3dWebPlayer的server
2、端联网配置写一随笔咯。 以SmartFoxServer2X官方的Unity3dExample”tris“为例,部署好服务器之后,在Unity端跑游戏肯定没问题,成功连接。但是当切换到WebPlayer打包方式,并且确定你连接的不是本机服务器,即--服务器端地址不为“LocalHost”或“127.0.0.1”时,会发现一个很“有趣”的现象(其实一点都不有趣啦,困扰哥好久-_-!~)--死活连接不上服务器了,不论是直接在Unity3DEditor中跑游戏还是打包好WebPlayer程序在浏览
3、器中跑。其中主要的错误描述为:[SFSDEBUG]TCPSocketLayer:Generalexceptiononconnection:Unabletoconnect,asnovalidcrossdomainpolicywasfoundatSystem.Net.Sockets.Socket.Connect_internal(IntPtrsock,System.Net.SocketAddresssa,System.Int32&error,BooleanrequireSocketPolicyFil
4、e)[0x00000]in:0 atSystem.Net.Sockets.Socket.Connect(System.Net.EndPointremoteEP,BooleanrequireSocketPolicy)[0x00000]in:0 atSystem.Net.Sockets.Socket.Connect(System.Net.EndPointremoteEP)[0x00000]in:0
5、atSystem.Net.Sockets.Socket.Connect(System.Net.IPAddressaddress,Int32port)[0x00000]in:0 atSfs2X.Core.Sockets.TCPSocketLayer.ConnectThread()[0x00000]in:0 经过摸索查阅资料后发现,这都是UnityWebPlayerSecuritySandBox机制的问题。Unity3D官方的
6、文档中解释这种现象:Thissecurityrestrictionsapplyonlytothewebplayer,andtotheeditorwhentheactivebuildtargetisWebPlayer.和我遇到的现象描述相符。说白了就是Unity3d为WebPlayer平台搞了一个securitySandBox机制,Only在WebPlayer的安全机制中,我们在使用Socket时需要服务器配置一个服务安全策略。因为没有在这方面进行任何处理,所以SecuritySandBox阻止了
7、程序的Socket连接,造成了以上的现象。OK,问题找到了。 解决办法是:Unity提供了一个“sockpol.exe”这么一个工具,在“...UnityEditorDataToolsSocketPolicyServer“路径下有sockpol.exe和它的源码。如果你的服务器端是Windows平台的话,直接Copy一个sockpol.exe到服务器端,在CMD中执行 sockpol.exe--all即可为服务器端配置好SecuritySandBox安全策略。 说到这了,
8、如果不认真读Unity3D官方关于SecuritySandBox的文档是不是还是有点云里雾里的,不禁要问了:这个sockpol.exe是什么神奇的东西呢? OK,我们可以不读官方文档,来看一看sockpol.exe的源代码吧,刚才说了在“...UnityEditorDataToolsSocketPolicyServer“路径下有sockpol.exe的源码,从源码中很容易就分析出原来sockpol.exe干的活就是监听WebPlayer平台获取SecuritySandBox安全策
此文档下载收益归作者所有