菜鸟在线游戏开发培训中U3d引擎的网络应用问题你了解多少?
游戏开发培训中U3d引擎的网络方面最大的优点就在于它拥有一个统一的结构。在游戏开发培训中网络是紧密结合在脚本引擎中的,这样我们就可以很轻松的来编写多个播放器的脚本,非常的方便。但说回来Unity上的API工作起来还是并不太如人意的,虽然说增删一个网络视图并不会对游戏脚本本身产生影响,但如果存在着单播放器或者多个播放器时,RPC与对象实例化就很难应对了,但这也不是一个解决不了的问题,这里大家可以写一个网络管理器来实现一些有用的功能。
例如:
通过名字或索引来加载等级,当网络在工作的时候,自动暂停网络队列处理,等待等级加载完毕后,通过固定一个回调函数来实例化对象。如果断开,我们就用通常先前的GameObject.Instantiate函数,不然就用NetWork.Instantiate来进行实例化对象。
再说消除对象,如果断开,我们使用GameObject.Destroy,反之使用Network.Destroy。
另外需要为所有组件来创建一个基类GameBehavior。这类有封装了一个关于networkView.RPC的封装器,用在没连上服务器的时候控制RPC。它还内置支持组件缓存和多态支持。
游戏开发培训最后一点,我们还需要写几个类来封装网络特性,如NetFloatProperty,NetVector2Property,NetVector3Property,NetVector4Property。每个类都可以从OnSerializeView读取位流和调用netFloatWrapper.Add,然后在更新中调用netFloatWrapper.GetValue()来自动篡改进入的数据包。