Godot-StartUP

创建于:2018-07-28

创建人: Justus

44 信息 154 成员
讨论基于Godot以及Unity引擎的游戏开发经验,理论和最佳实践。共享一些通用思路以启发另一种生产工具中的实践。独立开发群QQ: 122017359

关于多线程生成场景的问题

kylaCpp 2018-08-11

当比较多的需要动态生成场景加入主场景的时候的时候,为了防止卡住主线程,提升用户体验,

这个时候就需要用到辅助线程了。

可以在官网的api上看到thread



可以看到start(node,func) 就ok了

试一下,


创建一个辅助线程去跑help_thread 方法运行


报错了,仔细看一下原来是少了一个参数,因为start()的第三个参数userdata

于是改一下




ok了,现在可以动态的生成草方块而不会卡住主线程了,看起来就像多米诺骨牌一样,但是这样有点慢,可以尝试开启两个线程,一个生成左边半边,一个生成右面半边,于是开始改造

因为要大量创建的实例化同一个对象,要锁柱instance()

以及线程使用完毕后等待

还有一个比较重要的一点事,因为场景数不是线程安全的,所以要交到主线程去做


多线程跑生成中

结束,

int OS.get_processor_count()

这个方法可以返回当前机器的核心数,一般线程池开到核心数的两倍,在往上就会卡了(假设他没有做其他事情的话)

最后说一下,多线程的实例化其实非常慢,大概是main thread的十几倍

具体可以看https://github.com/godotengine/godot/issues/10970


 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册