这几天都在用unity3d做网游课程设计,本来做游戏就麻烦了,更别说是做网游,调试起来困难,而且我才刚用这个软件,于是被RPC坑出了一点心得。
我用的是4.1.2f1版本
使用RPC函数,首先脚本依附的gameobject要有networkview成分。然后就是RPC函数需要在Network.connect()之后才能调用,但是connect是异步函数(顺便它切换场景时不销毁,除非又建立了一个新connect),如果connect的下一句就是调用RPC,是会报告没联网的错误,因此需要等一点点时间。
然后就是RPC在客户端和服务器端都要有实现,比如客户端需要RPC调用服务端的login函数,客户端本身也要有login函数的声明,即使你只是RPC( RPCMode.Server)。当然,在你确认客户端不会调用longin这个函数时,你可以在函数里面什么也不写。
还有一个大坑是,客户端的networkview要和服务端的数目要相同。比如,某个场景我给了camera一个,player一个;在服务器那边我给camera一个。当我调用RPC时,它就报错:Could't invoke RPC function 'LoadDictEnemy' because the networkView 'SceneID: 1 Level Prefix: 0' doesn't exist。
估计原因主要是networkview的viewID配对不上,所以我给服务器的camera增加了一个。这时候,客户端的player 的viewID是1,camera是2,;服务端的camera分别是1,2