Godot中使用C#手动添加Area2D的body_entered信号回调方法
手动添加Godot C#中Area2D的
body_entered信号回调步骤 1. 定义匹配信号签名的回调方法
body_entered信号会传递一个进入Area的物理体节点(类型为Node2D或其子类),所以你需要在C#脚本中定义一个参数类型匹配的方法:
private void OnBodyEntered(Node2D body) { // 这里写入你的碰撞逻辑,比如打印调试信息 GD.Print($"进入Area的物体:{body.Name}"); }
如果你的Area只检测特定类型的物理体(比如CharacterBody2D或RigidBody2D),可以把参数类型换成对应的子类,提升代码精准度。
2. 在_Ready()中手动连接信号
有两种常用的连接方式:
- 字符串形式(兼容全版本):
public override void _Ready() { Connect("body_entered", this, nameof(OnBodyEntered)); }
- 类型安全委托(Godot 3.5+推荐):
这种方式避免字符串拼写错误,更易维护:
public override void _Ready() { BodyEntered += OnBodyEntered; }
注意事项
如果使用Godot 4.x版本,信号名称已改为大驼峰命名BodyEntered,此时字符串形式需要写成"BodyEntered",类型安全写法和上面一致。
最后确保脚本已正确附加到目标Area2D节点上,运行游戏后,当有物理体进入Area时,回调方法就会触发。
内容的提问来源于stack exchange,提问作者Kyle Pollard
相关产品推荐
相关产品推荐

