概念区别
Unity和Godot在处理组件和对象时有着根本的区别:
- Unity中,我们往一个GameObject上添加多个Component
- Godot中,我们使用”节点树”,通过父节点和子节点的关系来组织功能
在Godot中获取其他节点的方法
1、使用GetNode (最常用):
// Unity中的写法
socket = GetComponent<SocketIOComponent>();
// Godot中的写法
var myNode = GetNode("NodePath").As<DesiredType>();
小技巧:在Godot中,你还可以使用快捷语法 $
:
var myNode = $"NodePath"; // 等同于 GetNode("NodePath")
2、通过导出变量(类似Unity的拖拽引用):
[Export]
public NodePath targetNodePath; // 在编辑器中可以指定
// 在代码中使用
var target = GetNode(targetNodePath);
3、查找子节点:
如果需要查找特定类型的子节点,可以使用find_children
方法。
var children = FindChildren("*", "DesiredNodeType");
在获取节点的处理上,虽然Godot的方式和Unity不同,但通过节点树系统一样可以实现。适应这种思维方式后,你会发现Godot的方案同样强大且灵活。