标题很长吧。因为这确实是个大坑,差一点就导致了我放弃 godot 。 首先这个坑的原因来自百度的 ai ,它对 godot 的答案像模像样,可惜是假的。这种情况已经很多次了,对于别的代码也有这种情况,我觉得这个其实是 ai 一个很危险的地方,你不知道嘛就说不知道, 结果无论什么问题它一定会给出一个答案,结果不懂的就出错了。很多人现在用 ai 来辅助决策,假如这个决策和我们的代码情况一样 ... 可怕不。更可怕的是我们代码很容易验证真伪,那些个决策就难了,搞不好你被坑了好久一直到现在都不知道...
--
具体到这个问题,就是 gdscript 的变量现在的示例都是 var a = xxx 了事。这样你用 a 做了什么代码编译时都认为是正确的,运行时如果 a 是类 a 那正确,如果是类 b 那就悲剧了。 解决办法是声明变量时加类型,据说是 godot 4 之后才有的。声明方法倒是很人性,和现在最流行的 ts 一样,即 var a:ClassB = xxx 。
这里有个实用小技巧传授给大家(快说感谢,别的站没有的 :) ),如果实在不知道表达式后面产生的类型是什么,也不用着急。直接用没类型的变量接收后再断点调试看看。 ps 这里要说下 godot 的调试变量查看方法和绝大多数的 ide 都不同,不过会用了的话,我觉得比其他 ide 那种飞跃提示好太多了!还能关联帮助系统。