Unity UDP 客户端接收消息 必须开多线程吗?

橘子你个布纳纳 2018-02-05 02:19:14
以前写的是TCP/IP的客户端,虽然很久远了,但是我隐约记得可以不用开新的线程就能用。
但是近来写UDP的客户端接收消息,网上查的方式都是要开启新的线程,虽然没有什么太大的问题,但是新开的线程无法直接调用Unity里面的组件,总归来说有一些不太方便,所以想问问大神有没有什么好的方法,或者能用协成直接处理呢?
...全文
1260 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lee_鹿游原 2018-02-28
  • 打赏
  • 举报
回复
>访问unity assets store看看有没有合适的插件 或者看看 github。 >需要开线程,主线程和工作线程 共享一个数据列表(锁),工作线程收到数据,插入列表。主线程在update里每帧轮询,处理网络数据。
夫人的泡泡鱼 2018-02-27
  • 打赏
  • 举报
回复
做过UDP中的通信,有一点经验,开启线程接收放到队列中,在unity主线程中需要用数据的地方取出数据,实时效果基本可以满足要求。 参考下http://blog.csdn.net/zqckzqck/article/details/78882628
YYL_Debug 2018-02-23
  • 打赏
  • 举报
回复
都需要异步接受信息的。不然容易堵塞诶,至于不能调用unity中组件;是因为unity是单线程的,很多组件只能在主线程里调用; 建议做一步转换
无名剑 2018-02-22
  • 打赏
  • 举报
回复
一般来说 网络消息接收和发送都要开线程来做会好一点,即使是非阻塞的网络模型 试想TCP拼接数据包那些时间片如果每次都要等待处理结束再渲染,那帧率得多不稳定,而且多浪费时间片? 接收到的网络消息 可以存到一个消息队列,比如queue 里头, 然后交给主线程处理就OK了(注意防止资源竞争,读写加锁) 不管是TCP 还是 UDP 都是一个理

2,543

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧