unity学习(77)--多玩家信息交互--不同类型的数据包

这篇具有很好参考价值的文章主要介绍了unity学习(77)--多玩家信息交互--不同类型的数据包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

明白各个数据包的作用,以及是否正确的发挥作用

1.“120包”,客户端登录时发给服务器的,服务器处理后返回“121包”。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

2.“121包” ,服务器返回给客户端的,包含登录时所有在线玩家的信息。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

客户端也通过createPlayer函数成功初始化了自己的gameobject。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.“122包”,服务器告诉客户端有新玩家进入。

3.1可以收到“122包”,但是客户端并未能成功初始化其他玩家!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.2即使关掉exe,122还是会卡包

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

下面着手解决这两个问题。

 3.3首先是不初始化!服务器断开连接,几乎就是因为客户端报错,就好像之前MessageManger没有绑到map2的相机上导致不收包!所以此时的问题也应该是客户端没能正确处理“122包”所引起的。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

而且通过下图可以明确看到,出了121的createPlayer成功了,所有122的都失败了

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.4通过进一步调试定位异常的位置。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

登录时,正常如下。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 当有其他玩家登录,客户端收到122包的时候。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

 说明当有其他玩家登录时,第一次122至少执行到了Debug.Log("createPlayer---2"),其他在playerList.Add(model.id, model);这句就已经异常了。因为重复了,不能再次加入。

3.5先想办法让“第一次122”走的更远一些,通过进一步定位发现是下面这句产生了一异常:

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

 try-catch输出的异常内容如下:

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

你调用的对象是空的?!也就是说我的预构体数组playerProfabs[model.job]为空?

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.6实测当有新玩家链接服务器时,客户端playerProfabs[model.job]的确为空!在121时createPlayer几次都没有问题应该是unity脚本机制导致的问题!!!

气急败坏,被迫学会了用vs调试unity程序

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

发现第二次使用createPlayer时,预构体内容已经为空了!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.7添加监视

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 发现了很神奇的现象,OnLevelWasLoaded在转换场景的过程中执行了两次!这不走调试器永远都不知道!因为camera和canvas都绑定了maphandler,两次加载完后,预构体的赋值都没有问题。只保留camera的maphandler这次OnLevelWasLoaded就只执行一次了,对这个函数的机制又有了更新的认识

3.8当有其他玩家登录时!收到的包应该是没问题。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.9 f11发现此时实例为空!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 此时反应过来了“121包”直接调用的createPlayer,并没有初始化instance。

“122包”再想着初始化已经晚了!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.10现在有两种解决办法,要不在unity中实现“脚本”间调用函数(new static二选一),要不把maphandler的内容整合到messageManager中!我选择尝试前者!结果是成功的!

3.10.1在maphandler中加入static变量playerProfabsStatic

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.10.2在OnLevelWasLoaded中赋值

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.10.3createPlayer中使用

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.10.4单个玩家登录时候也是立竿见影

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.10.5服务器中初始化以后就不会重复给自己返回“124”了,“123”是客户端一直向服务器发送的!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 3.10.6编译对应的exe进行测试!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

unity后登陆时如下:有问题

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

unity先登录时,exe登录时,确实接近没问题了,我感觉数据包上可能有些问题,maphandler的实例化彻底没问题了!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.11现在问题转换成了先登录的收不到后登陆的122,后登陆的到时可以初始化出来之前的模型。这两个问题都要解决。

3.11.1先让unity后登陆 exe先登录,结果如下,成功createplayer初始化,但unity马上就嘎!123和124收发都没问题!先登录的.exe此时完全卡住了!通过多天经验我感觉是124包处理时有问题

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.11.2,果然是"124包"有问题,很明显,没有能直行到底部!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 3.11.3,利用vs去调试unity!短短一天进步飞快,dto说明收到的包确实没问题,

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

 但其他static全部为空,

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3.11.4此时游戏卡住,没有进入map2,所以static变量都是空的,调用空的进而引起了异常,十分正常的!最简单的办法就是“标志位+if”! 只要会用vs调unity,效率提升十倍!

第一次“124时”,状态是3

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

3代表加载状态

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 

 而正常初始化后,状态值run为0,

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

所以当处于loading(3)状态时,不要执行move,对应修改代码如下:

unity学习(77)--多玩家信息交互--不同类型的数据包,学习 3.12再次编译exe后进行测试!只要动手做真的快的很!

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

 3.13当unity先进的时候,122时引起instance为空!这个问题之前解决过,怎么又出来了!

4.“123包” ,客户端不停发送给服务器的,代表当前玩家的信息。单个玩家没问题。

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

5.“124包” ,服务器返回给客户端的,包含当前所有在线玩家的信息。和“123包”一样,单个玩家没有问题!“124包”一登上来就工作,完全独立于“123包”,“124包”转到move()的过程中要对game .state进行判断,成功加载(121)后才能移动

unity学习(77)--多玩家信息交互--不同类型的数据包,学习

zhi文章来源地址https://www.toymoban.com/news/detail-858617.html

到了这里,关于unity学习(77)--多玩家信息交互--不同类型的数据包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity的C#学习——标识符号、关键字与数据类型及其转换方式

    标识符是用来识别 类、变量、函数 或任何其它用户定义的 项目 。在 C# 中,类的命名必须遵循如下基本规则: 标识符必须以 字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。 标识符中的第一个字符不能是数字。 标识符必须不包含任何

    2024年02月01日
    浏览(45)
  • unity学习(47)——服务器三次注册限制以及数据库化角色信息2--数据流程

    1.UserHandler.cs的create中 就三个参数,很好理解的  2.f11进到UserBizImpl.cs中的create,playerModelArray中存放着我期待的数据。   3.前3次注册都没有问题: 4.第4次注册,成功跳出  5.第19行的list是读取,第32行的put是写入,put的代码如下所示:好几个TryAdd

    2024年03月09日
    浏览(39)
  • 【CompletableFuture任务编排】游戏服务器线程模型及其线程之间的交互(以排行榜线程和玩家线程的交互为例子)

    需求: 1.我们希望玩家的业务在玩家线程执行,无需回调,因此是多线程处理。 2.匹配线程负责匹配逻辑,是单独一个线程。 3.排行榜线程负责玩家的上榜等。 4.从排行榜线程获取到排行榜列表后,需要给玩家发奖修改玩家数据,因此涉及到排行榜线程和玩家线程的交互。

    2024年01月22日
    浏览(45)
  • Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量

    2023年04月09日
    浏览(48)
  • skynet非单点类型节点的管理(一):玩家代理节点

    单个skynet进程,或者说单台机器的承载业务能力是有上限的,对于负责玩家主要业务的节点,横向扩展以提高游戏承载能力是必须的。 对于滚服架构,玩家角色与指定业务节点(单服)固定对应,连接游戏业务前通过中央后台获取到指定信息进行连接。承载能力通过新增单服

    2024年04月08日
    浏览(26)
  • Java List 中存不同的数据类型

    在最近的实践中,有人突然问了一个问题: 在 Java 的 List 中可以存不同的数据类型吗? 这个问题突然给问到了,我们都知道 Java 中的 List 中存的是对象,通常我们定义都会这样的定义: ListString testList = new ArrayList();  这样我们就知道了 testList 中存的对象都是 String 字符串了

    2024年02月07日
    浏览(34)
  • Pytorch:将列表数据转不同数据类型的Tensor矩阵

            本文主要介绍pytorch中不同数据类型的Tensor矩阵,例如:float32、float64、int32、int64。并将创建好的列表数据转成不同数据类型的Tensor矩阵,最后进行:行复制的操作。 一、列表转Tensor,复制行和列向量 二、转Tensor矩阵中元素的数据类型 三、求个赞就行    

    2024年02月11日
    浏览(50)
  • 前端和后端交互数据类型转换

    页面是男/女 后端pojo类以及数据库中是Integer 0/1  怎么样很方便地转化? ----枚举转化-- 在web开发中有时会使用枚举作为参数,而前端在调接口时就会出现传错或者传空导致后端拿不到枚举类型。在这里就使用反序列化@JsonDeserialize 这里是对枚举进行反序列化,所以首先编写一个

    2024年03月26日
    浏览(53)
  • MySQL不同数据类型的最大长度与范围限制

    MySQL中不同的数据类型有不同的最大长度限制,主要如下: char(n):最大长度为255个字符 varchar(n):最大长度为65535个字符(受字符编码影响) tinytext:最大长度为255个字符 text:最大长度为65535个字符(5.5.3之前),或21844字符(5.5.3之后,utf8mb4编码) mediumtext:最大长度为16777215个字符 longtext:最大长

    2024年02月16日
    浏览(47)
  • 一文理解深度学习中的多尺度和不同感受野(视野)信息

    如何理解深度学习中的多尺度和不同视野信息 在进行图像处理的深度模型中,合理理解并利用不同尺度信息和不同视野信息将对图像结果有意想不到的结果,那么具体什么是多尺度信息,什么是不同视野信息 1.不同尺度信息 多尺度是指不同尺度的信号采样,在不同尺度下可

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包