关于Godot性能的一些问题
godot吧
全部回复
仅看楼主
level 7
1. 需要使用大量、重复且生命周期短的对象时(例如,子弹,粒子特效等),是否需要自己实现一个“对象池”或者“节点池”来提高性能?(在网上找到的资料说法不一,有说Godot内置了对象池,也有说需要优化的)
------------------------------------
1.5 以及,频繁的Instance()和QueueFree()对性能的影响程度如何?
------------------------------------
2. 相较于C#的委托,Godot提供的信号系统性能如何?例如,每一帧都发送一次信号,是否会对性能有较大影响?
------------------------------------
3. 在绘制较大量的贴图时,下面四种做法:
(1) 使用Godot内置的图像节点(例如Tilemap,Sprite,TextureRect等)
(2) 自己重写_Draw()方法,控制所有贴图应当出现的位置,用一个节点绘制所有的贴图
(3) 使用VisualServer从底层绘制
(4) 使用Shader
他们的性能如何?
这些是我使用Godot时产生的疑问,还请大佬们解答,提前感谢啦[哈哈]
2022年10月20日 10点10分 1
level 7
自顶[乖]
2022年10月21日 02点10分 2
level 7
帮顶
2022年10月21日 11点10分 3
吧务
level 14
1、一般还是推荐手动优化,毕竟自己优化可控性高一些,引擎内置的功能如果不去看源代码,是不知道是否符合项目需求的。
1.5、会有明显影响,尤其是QueueFree的意思就是“队列删除”,意思就是要等待后才会移除,等待就意味着延迟。
2、C#的委托其实更像是godot的FuncRef而不是信号,而godot的信号其实是模仿自QT……性能的话还可以,主要的性能消耗也不是来自信号本身,而是信号调用的方法。
[勉强]3.1、内置的图像节点有性能优化,也就是2D批处理(在官方文档→教程→优化→2D→使用批处理优化,里可以见到)
3.2、使用_draw绘制的话,就无法进行批处理优化了,不过在不做批处理的情况下,draw有可能会比节点性能高。
3.3、底层绘制的话……取决于自己手动优化的水平了,如果只是一股脑全画上去,那性能肯定不行。
3.4、Shader的性能取决于复杂度,越复杂的Shader性能就越差
2022年10月21日 14点10分 4
ok 谢谢吧主[哈哈]
2022年10月22日 08点10分
1