Unity 多人游戏框架学习系列十二
系列文章目录
unity知识点
文章目录
- 系列文章目录
- 前言
- 一、NetworkClient
- 二、NetworkConnection
- 三、NetworkServer
- 四、NetworkServerSimple
- 壁纸分享
- 总结
前言
书接上回,承接下回,一系列的。
博客将会介绍多人游戏学习。希望这篇博客对Unity的开发者有所帮助。
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
欢迎点赞评论哦.下面就让我们进入正文吧 。
提示:以下是本篇文章正文内容,下面案例可供参考
Multiplayer 类参考
一、NetworkClient
NetworkClient 是一个高级 API 类,用于管理客户端与服务器之间的网络连接,并能在客户端与服务器之间发送和接收消息。NetworkClient 类还有助于管理生成的网络游戏对象,以及远程过程调用消息和网络事件的路由。
二、NetworkConnection
NetworkConnection 是一个封装网络连接的高级 API 类。NetworkClient 对象拥有一个 NetworkConnection,而 NetworkServer 则拥有多个连接——每个客户端一个。NetworkConnection 具有发送字节数组或序列化对象作为网络消息的能力。
NetworkConnection 类包含当数据发送到传输层或者从传输层接收数据时调用的虚拟函数。这些函数允许专用版本的 NetworkConnection 检查或修改此数据,甚至将数据路由到不同源。下面显示了这些函数,包括默认行为:
代码如下:
public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId){ HandleBytes(bytes, numBytes, channelId);}public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error){ return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error);}
这些函数的一个用例是记录传入和传出数据包的内容。以下是派生自 NetworkConnection 的 DebugConnection 类的示例,此类用于将数据包的前 50 字节记录到控制台。要使用这样的类,请在 NetworkClient 或 NetworkServer 上调用 SetNetworkConnectionClass() 函数。
class DebugConnection : NetworkConnection{ public override void TransportRecieve(byte[] bytes, int numBytes, int channelId) { StringBuilder msg = new StringBuilder(); for (int i = 0; i < numBytes; i++) { var s = String.Format(\"{0:X2}\", bytes[i]); msg.Append(s); if (i > 50) break; } UnityEngine.Debug.Log(\"TransportRecieve h:\" + hostId + \" con:\" + connectionId + \" bytes:\" + numBytes + \" \" + msg); HandleBytes(bytes, numBytes, channelId); } public override bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error) { StringBuilder msg = new StringBuilder(); for (int i = 0; i < numBytes; i++) { var s = String.Format(\"{0:X2}\", bytes[i]); msg.Append(s); if (i > 50) break; } UnityEngine.Debug.Log(\"TransportSend h:\" + hostId + \" con:\" + connectionId + \" bytes:\" + numBytes + \" \" + msg); return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error); }}
三、NetworkServer
NetworkServer 是一个高级 API 类,可管理来自多个客户端的连接。
四、NetworkServerSimple
NetworkServerSimple 是一个高级 API (HLAPI) 类,可管理来自多个客户端的连接。NetworkServer 类负责处理游戏类型内容(比如生成、本地客户端和玩家管理器)而且有一个静态接口,而 NetworkServerSimple 类是一个纯网络服务器,无任何游戏相关功能。NetworkServerSimple 也没有任何静态接口或单例,所以在同一时间内,在一个进程中可存在多个实例。
NetworkServer 类在内部使用 NetworkServerSimple 的实例来进行连接管理。
壁纸分享
总结
点关注不迷路哦。欲知后事如何,且听下回分解。
本次总结的就是这样的, 有需要会继续增加功能
如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!