unity_net_book
unity_net_book copied to clipboard
《Unity3D网络游戏实战(第二版)》以制作一款完整的多人坦克对战游戏为例,详细介绍网络游戏的开发过程。透过本书,读者能够掌握Unity网络游戏开发的大部分知识,能够深入了解TCP底层机制,能够亲自搭建一套可重复...
 你这写得是不是有问题
测试的时候总是响,VS又不报错,DEBUG了一下午,原来是转移字符的问题,'/a'响铃。 OnMove协议编码后: `55-0-7-0-77-115-103-77-111-118-101-123-34-112-114-111-116-111-78-97-109-101-34-58-34-77-115-103-77-111-118-101-34-44-34-120-34-58-49-50-48-44-34-121-34-58-49-50-51-44-34-122-34-58-45-54-125` 使用string recvStr = System.Text.Encoding.Default.GetString(state.readBuff, 0, count);解码后: `7\0\a\0MsgMove{\"protoName\":\"MsgMove\",\"x\":120,\"y\":123,\"z\":-6}` 泪目了。。。。
作者您是否是忘记提示读者在该章节Main组件里的Update函数里调用NetManager模块的Update函数了。 虽然可能是个很小很小的问题,但因为是初学者,我学到这的时候把所有代码弄好了没法在客户端收到服务端传来的消息,检查了客户端确实能接收到消息,但是打印部分放在NetManager模块的Update函数里的,所以不调用Update的话客户端并不会打印消息。在这里提醒一下。十分感谢。
在测试书籍附加的代码时,经过debug发现存在以下两个问题: 以下两个问题均在 客户端代码的NetManager中。 ### 问题1: msgListeners字典管理不当,产生空指针 调试过程中,发现一局游戏结束后,再次从房间进入游戏,程序会直接报错跳出。 针对RemoveMsgListener函数: ``` //删除消息监听 public static void RemoveMsgListener(string msgName, MsgListener listener){ if (msgListeners.ContainsKey(msgName)){ msgListeners[msgName] -= listener; } } ``` 在一局游戏结束后会执行RemoveMsgListener函数,把msgListeners字典的某个value删了,但key却没删。 当再次从同一个房间开启下次游戏的过程中,msgListeners 中 仍然有 msgName...
我现在用的网络的东西比较少,但是像是mirror使用的默认协议是KCP,就是基于UDP的可靠协议,我也感觉基于UDP的可靠协议应该是最常用的,为啥TCP是最常用的啊。像断线重连用的QUIC协议也是一种可靠UDP协议。
作者你好,在手机端测试时,发现只要锁屏、切屏一小段时间就会导致玩家离线。 报错如下: 9/8/2024 4:19:00 PM - [NetManager.ReadClientfd] Receive SocketException System.Net.Sockets.SocketException (104): Connection reset by peer at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at NetManager.ReadClientfd(Socket clientfd) in /root/unity/TankBattleServer/script/net/NetManager.cs:line 103