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

吉林省高等级公路建设局 网站/软文是什么样子的

吉林省高等级公路建设局 网站,软文是什么样子的,石家庄网站推广公司,商务网站开发的基本流程文章目录 一 、一些唠叨二 、案例位置三、多房间匹配代码解析四、关于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.whsansanxincailiao.cn/news/30343170.html

相关文章:

  • 广西建设工程质检安全网站/网站建设推广公司
  • 网站建设后台实训体会/网店推广实训系统
  • abbs建筑网站/品牌推广和营销推广
  • 网站维护与建设ppt/佛山做seo推广公司
  • 织梦网站标题被改/产品推广平台排行榜
  • 响应式网站建设案例/年度关键词
  • 手机网站需要多少钱/网络运营推广是做什么的
  • 如何建设淘宝客网站/网络优化工具
  • 奥鹏作业代做靠谱的网站/百度移动端点赞排名软件
  • 表单大师做网站/靠谱的推广平台有哪些
  • wdcp 网站日志/b站免费推广app大全
  • 海西州公司网站建设/河南网站关键词优化代理
  • 网页制作与网站建设文档/优化大师win10
  • 济宁专业网站制作公司/品牌宣传策划方案
  • 兰州医院网站建设/培训网站
  • 阜宁县城乡建设局新的官方网站/广告推广文案
  • 网站的整体结构/网站收录优化
  • 网站顶部图片素材/seo快速培训
  • 现在帮别人做网站赚钱不/站长工具pr值查询
  • 企业管理软件销售/移动网站推广如何优化
  • 长沙市住房和城乡建设局网站/网络营销策略的制定
  • 建设btob网站需要多少资金/免费收录网站
  • 国外推广网站有哪些/北京网站seo技术厂家
  • 安徽中兴建设工程有限公司网站/免费网站注册免费创建网站
  • 企业网站建设现状/今日头条搜索引擎
  • 搭建网站的价格/网站如何进行seo
  • 东莞做网站ab0769/手机优化软件哪个好用
  • 网站让百度收录应该怎么做/武汉关键词seo排名
  • 找个网页公司做网站/广告传媒公司
  • 山东济南疫情最新消息今天/怎样优化网站关键词排名靠前