obsidian/笔记文件/2.笔记/九宫格AOI视野管理_第六章.md
2025-03-26 00:02:56 +08:00

4.6 KiB
Raw Blame History

打开unity客户端这是挂载逻辑的根节点其中完成了各个声明变量的绑定

!Pasted image 20240417143543.png

对应用到的异步网络通信、协议dll程序集

!Pasted image 20240417143903.png

!Pasted image 20240417143913.png

客户端对应的ClientSession网络连接完成连接、断连、接受消息的重写其中接受消息会调用GameRoot逻辑根节点的消息入队接口后续会解析

!Pasted image 20240417143814.png

在客户端的通用工具类有俩枚举分别是对应mat材质颜色、和实例化预制体其中CellItem是地图方块、EntityItem是玩家实体

!Pasted image 20240417144452.png

!Pasted image 20240417144625.png

客户端的通用工具都是静态函数分别是获取MeshRenderer网络设置Material材质颜色 LoadItem函数接口通过ItemEnum枚举实例化游戏实体 SetCellColor函数接口是根据索引设置不同的地图方块颜色颜色最大索引是9超出边界重新设置为1即可

!Pasted image 20240417144654.png

游戏根节点对应的逻辑声明的变量Instance单例、loginBtn登录按钮、cam相机设置跟随的布尔、entity实体所属Root根节点、cell地图方块所属Root根节点 还有client客户端的异步网络连接、消息队列pkgQue 场景内玩家汇总的字典容器playerDic

!Pasted image 20240417144939.png

Start函数执行了打印log插件的初始化也基于本机ip开启客户端连接再完成玩家字典容器的初始化即可

!Pasted image 20240417145156.png

!Pasted image 20240417134531.png

HandleRspLogin函数接收服务器端发回来的登录数据回包设置当前自身玩家Entity实体对应的ID、填写到text文本 AddPkgQue函数添加pkg数据包到消息队列pkgQue ClickLoginBtn函数是点击登录的逻辑构建ReqLogin协议的消息数据包、SendMsg发送给服务器 OnApplicationQuit函数是unity内置事件函数退出程序用来发送SndExit玩家退出协议的消息包给服务器然后关闭客户端

!Pasted image 20240417145422.png

接受到服务器的回包后HandleNtfCell函数是实例化cell地图方块设置对应的父节点、localPosition位置、localScale缩放再调用通用工具类的SetCellColor函数设置cell方块颜色

!Pasted image 20240417145739.png

接受到服务器的回包后HandleNtfAOIMsg函数是实例化其他进入游戏的玩家Entity实体

!Pasted image 20240417145903.png

继续把玩家放入PlayerDic字典容器最后再设置一下玩家的position位置即可

!Pasted image 20240417150001.png

玩家任意移动是RandomDirTest函数接口在完成任意方向移动后发送SndMovePos协议的网络消息包SendMsg给服务器即可

!Pasted image 20240417150109.png

FixUpdate帧更新unity内置事件函数通过Input.GetAxis函数拿到 玩家实体的客户端移动然后发送SndMovePos协议的网络消息包SendMsg给服务器 如果敲T键会修改布尔让玩家任意自动移动起来方便测试

!Pasted image 20240417150231.png

Update更新函数也是unity内置事件函数监听pkg消息队列如果不为空就switch根据不同的cmd协议号触发不同的case逻辑即可也是上述解析过的登录、其他玩家Entity实体相关、地图方块cell相关

!Pasted image 20240417150419.png

回到服务器端,运行,调试服务器

!Pasted image 20240417150616.png

!Pasted image 20240417150632.png

回到客户端,运行,点击

!Pasted image 20240417150649.png

正常生成玩家Entity和地图方块一共25块如之前解析

!Pasted image 20240417150724.png

回顾,对应的,服务器逻辑

!Pasted image 20240417150820.png

客户端wasd移动生成新的cell方块表现正常

!Pasted image 20240417150941.png

服务器log表现正常

!Pasted image 20240417150832.png

回顾服务器是可以监听输入生成服务器Entity玩家实体

!Pasted image 20240417150903.png

测试100个服务器输入回车

!Pasted image 20240417151022.png

服务器log正常

!Pasted image 20240417151034.png

客户端,出现在玩家周边的,其他玩家,才会实例化出来,表现正常

!Pasted image 20240417151107.png

共享所有Entity移动导致的地图方块生成表现正常

!Pasted image 20240417151128.png

unity退出游戏服务器log正常

!Pasted image 20240417151227.png