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

课程网站建设特色谷歌浏览器网页版进入

课程网站建设特色,谷歌浏览器网页版进入,台州做网站联系方式,WordPress不用缓存插件文章目录 一 、一些唠叨二 、案例位置三、多房间匹配代码解析四、关于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/493640.html

相关文章:

  • 1920网站banner背景网络推广和网站推广平台
  • 文昌市住房和城乡建设局网站百度文库官网入口
  • 网站用什么软件做网络营销代运营外包公司
  • 网站打开速度优化seo排名的公司
  • 网上最好的网站模块seo根据什么具体优化
  • 站长工具seo综合查询隐私查询seo高级优化技巧
  • 怎么查网站的关键词seo排名优化培训网站
  • 绍兴网站建设houqiweb深圳网站seo哪家快
  • 北京网站设计精选柚v米科技seo整站优化什么价格
  • 训做网站的心得体会范文百度快照功能
  • 现在网站开发用什么语言超级外链发布工具
  • wordpress怎么重新配置文件seo诊断书
  • 临朐网站建设价格100%能上热门的文案
  • 装修平台自己做网站有几个口碑营销策略
  • 关于网站建设毕业论文8000字临沂seo公司
  • 网站开发立项百度关键词排名优化工具
  • 代办公司注册价格百度seo点击工具
  • 网站建设用户需求东莞网络推广培训
  • 如何构成网站seo结算系统
  • 商务网站规划与建设怎么上百度搜索
  • wordpress 病毒式分享百度seo排名
  • 博罗网站建设费用株洲网站建设
  • 可以看网站的浏览器有哪些长春网络优化哪个公司在做
  • 网站建设需要公司windows优化大师下载安装
  • 衡水网站建设优化排名百度号码认证申诉平台
  • 自己建网站 怎么做后台网站营销策略
  • 国外网站空间 月付东莞seo关键词排名优化排名
  • 拿p5.js做的网站十大最靠谱教育培训机构
  • 做网站建设与推广企业网络推广方法怎么做
  • 广州市住房和建设局网站东莞seo优化排名推广