当前位置: 首页 > wzjs >正文

深圳电子烟网站建设soso搜索引擎

深圳电子烟网站建设,soso搜索引擎,网站建设就业,中文域名做的网站有哪些文章目录 一 、一些唠叨二 、案例位置三、多房间匹配代码解析四、关于MatchInterestManagement五、总结 一 、一些唠叨 最近使用Mirror开发了一款多人同时在线的肉鸽塔防游戏,其目的是巩固一下Mirror这个插件的熟练度,另一方面是想和身边的朋友一起玩一下自己开发的游戏. 但是…

文章目录

  • 一 、一些唠叨
  • 二 、案例位置
  • 三、多房间匹配代码解析
  • 四、关于MatchInterestManagement
  • 五、总结


一 、一些唠叨

最近使用Mirror开发了一款多人同时在线的肉鸽塔防游戏,其目的是巩固一下Mirror这个插件的熟练度,另一方面是想和身边的朋友一起玩一下自己开发的游戏.
但是如果考虑到人数多的时候则需要同多个房间同时进行游戏,多个房间进行游戏的实现方式一直没找到答案,直到最近…原来就在Demo里有个MultipleMatches的案例.
今天就分享一下我对这个案例的解读.
在这里插入图片描述

二 、案例位置

在正确添加Mirror插件后在Project>Mirror>Examples>MultipleMatches
目录下有Prefabs、Scenes、Scripts、三个文件夹
Prefabs:文件夹放的是游戏主控制的预设:MatchController 及 房间和游戏相关的预设
Scenes:就一个场景
Scripts:游戏相关脚本
在这里插入图片描述

三、多房间匹配代码解析

MatchNetworkManager:
场景中的NetworkManager挂载了MatchNetworkManager脚本,该脚本继承NetworkManager主要处理网络链接相关事情.
该脚本主要重写了NetworkManager里的方法,主要是将服务器状态触发的事件传递给canvasController

CanvasController:
看名字以为是控制界面控制的,其实是记录了客户端服务器通讯 房间分组处理 玩家处理等相关数据,这个脚本分为以下几个部分:

第一部分(顶部参数):
1.OnPlayerDisconnected 用于存所有链接的客户端
2.playerMatches玩家所以的房间
3.openMatches记录了所有可供加入的房间
4.matchConnections记录了一个匹配房间中的对应的玩家
5.playerInfos玩家网络信息
6.waitingConnectionns尚未加入匹配的链接
7.localPlayerMathch localJoinedMatch selectedMatch 都为一模一样地玩家参数

第二部分(UI Functions):
1.InitializeDataey 及 ResetCanvas 方法为初始化和重置游戏的方法
第三部分(Button Calls)
在运行游戏时在界面中可以看到"创建"“加入”“准备”"开始游戏"等按钮的对应事件

第四第部分(Server Match Message Handlers)
这部分主要是服务器端相关处理函数,值得提及的是[ServerCallback]标签表示该代码只会在服务端代码中运行
通过 NetworkServer.RegisterHandler方法注册了OnServerMatchMessage方法用于处理ServerMatchMessage类型的消息

第五部分(Client Match Message Handler)
这部分主要是处理客户端相关处理的函数,同上[ClientCallback]标签表示该代码只会在客户端中运行
在客户端运行时也通过 NetworkClient.RegisterHandler(OnClientMatchMessage)注册了OnClientMatchMessage方法处理ClientMatchMessage类型事件

MatchMessages:
主要编写的是消息结构ServerMatchMessage及ClientMatchMessage都是继承于NetworkMessage接口
通讯中用到的各种数据结构 枚举等.

剩余几个则是挂载在UI上的几个脚本,主要用于触发CanvasController中的事件

四、关于MatchInterestManagement

细心的朋友会发现在场景物体NetworkManager下,除了常规的NetworkManager和KcpTransport以外还有MatchInterestManagement
其作用是用于通过限制玩家接收信息的方位,从而避免全局广播带到的宽带浪费.
运行时为同一块比较的 对像设置为了一个MatchID用于区分
在这里插入图片描述

五、总结

我通过MatchNetworkManager将一些网络事件传递到CanvasController中,每当创建一个一房间就会创能MatchController预设
MatchController预设上有MatchController脚本用于控制单局游戏的进度
房间的创建 加入 销毁则由CanvasController负责.

个人认为这个例子用于做一些简单的小游戏是可以的,当数据交互量比较多的则不适合.例子中扔有不少知识点值得借鉴.

正式应该可能还需要后端配合,如使用每一个房间开启另一个进程的方式.或使用扩展性的方式.

http://www.dtcms.com/wzjs/104116.html

相关文章:

  • 做一个网页版面多少钱seo网站推广费用
  • 在哪里查公司名字有没有注册seo最新教程
  • 百度信息流广告昆明seo技术培训
  • 新疆建设兵团监狱管理局网站网络营销案例实例
  • 网站建设如何优化疫情防控 这些措施你应该知道
  • wordpress 下载插件xydown网站页面优化内容包括哪些
  • 网站建设策划方案百度推广怎么赚钱
  • 阳泉网站建设公司西安网络推广运营公司
  • 做网站用dramwaver还是vs班级优化大师官方网站
  • 网站建设公司画册百度助手下载
  • 建设银行深圳社会招聘网站外贸网站建设公司
  • wordpress后台运行很慢山东seo首页关键词优化
  • 做电影网站量刑标准移动端优化
  • 怎么在自己的电脑做网站友链通
  • 工商局网站如何做网登做网站公司哪家比较好
  • 如何做网站的关键词企业推广网络营销
  • 自己做彩票网站犯法吗谈谈你对互联网营销的认识
  • 如何在自己做的网站中顶置内容bt种子bt天堂
  • 自己做视频网站可以吗河南自助建站seo公司
  • 可以用腾讯企业邮箱域名做网站南宁网站建设优化服务
  • 好看英文网站网络推广赚钱
  • 电商有哪些平台app哈尔滨seo服务
  • 深圳市门户网站建设多少钱百度信息流推广教程
  • 微信开放平台是公众号吗网站优化和网站推广
  • 建设婚纱摄影网站的费用河南网站seo费用
  • 做网站鼠标移动 链接变颜色品牌网
  • 电子商务网站建设分析论文推广app
  • 政府机关网站制作云盘搜
  • 长沙市人民政府官网郑州网站排名优化公司
  • 大型企业网站建设如何快速提升网站关键词排名