本仓库主要存放新人常会问的有关Godot的问题,在这里进行统一解答
你也可以在Issue里对你困惑的问题进行提问,作者和其他的一些大佬都会去尽力解答你的疑问。
当然,这里也存放了一些可供参考的小技巧
注意: 提问前请先搜索你要问的问题是否已经有人提过,如果提过,那就请不要重复提问,否则会按duplicated处理并关闭。如果提过但是已被解决,请参考该问题的解决方案,若未解决,可以在该问题帖的1L处点个大拇哥,大拇哥越多,我们就会越优先对该问题进行解答。 温馨提示: 由于作者和大佬们都有三次元的事情要做,因此不一定能够及时回答各位的问题,还请各位提问人耐心等候与海涵。
不同的语言有不同的优缺点,以下列出了Godot原生直接支持的语言及其优缺点,请根据自身实际情况进行考量与选择。
- 上手简单
- 操作快捷
- 不需要外置编辑器
- 不需要编译
- 不需要手动内存管理
- 性能不及C#、C++
- 有些错误可能只能在运行时才能检测到
- 仅适用于Godot,且只能获取Godot API,对于非Godot的API则需要借助GDExtension或C#
- 半编译半解释,上手程度介于GDScript和C++之间,如果前者你已有所熟悉可以学学这个
- 性能约为GDScript的4倍
- 有微软官方支持的Godot C#
- 适合大部分有过Unity使用经验的人或对C#就轻驾熟的人使用
- NuGet,不解释了
- 无文档注释语法
- 每次都需要预编译代码
- 引擎内脚本编辑器对C#的语法高亮支持很差
- 缺失部分功能,如[OnReady]特性(对应@onready注解)
- GDScript不能继承C#类,反之亦然
- 垃圾回收机制(GC)可能会导致游戏出现无意间的轻微卡顿
- C#脚本写来比GDScript要难一些
- 速度比C#、GDScript都快
- 能够涉及底层操作
- C++程序员狂喜
- 可以被GDScript、C#类继承
- 上手难度较高,精通难度非常高(但一般你会写一点C++就可以了)
- 无文档注释语法
- 每次都需要编译,编译速度比C#长(当然,取决于你的电脑性能及使用的编译框架,我这里用的是官方推荐的scons,速度比较慢)
- 强类型语言,需要不停踩坑
- 需要注意手动内存管理 当然,你也可以考虑多种语言混合使用,因为Godot是允许跨语言编程的(虽然暂不支持C#和GDScript脚本之间的相互继承)。这里作者个人提供一个参考方向给大家:
- 纯2d小游戏,运算量不大的,或者要写插件的可以直接硬怼GDScript
- 3d游戏或大型2d游戏的:C#或者C# + GDScript
- 涉及到高密度算量或底层操作的,用C++
当一个节点含有子节点时,优先执行子节点的_ready()
函数,兄弟函数之间的_ready()
按节点树从上往下的顺序依次调用,在所有子节点都执行完一遍_ready()
方法后,才执行本节点的_ready()
方法。
因此,根节点永远都是最后执行_ready()
方法的。
下面这个格式图为场景树模拟图,其中A、B、C表示同级节点(兄弟节点),1、2、3表示执行顺序。
Root(最末尾执行)
A1
A2
A6B3
B4
B5A12
B7
B11C8
C9
C10
A13