是否可以在 C# 界面中定义 Godot 信号?

Is it possible to define Godot Signal in C# interface?

提问人:Megalord 提问时间:10/31/2023 更新时间:10/31/2023 访问量:84

问:

我必须在我的游戏中实现伤害系统。我有多个职业,可能会损坏(单位、行星等)。

每个可能损坏的节点都实现了 IDamageable 接口。 戈多信号 Killed 似乎没有生成,也不存在.

简化代码在这里

public interface IDamageable
{
    [Signal]
    delegate void KilledEventHandler(Node3D target); // Will used to untarget current target of unit or remove it from UI selection info
    float HP { get;}

    bool ApplyDamage(float damage);
}

public class Unit : CharacterBody3D, IDamageable
{
    [Export]
    public float HP { get; private set; } = 10;

    public bool ApplyDamage(float damage)
    {
        HP -= damage;
        if (HP <= 0)
        {
            EmitSignal(SignalName.Killed); // SignalName.Killed doesn't exists
        }
        return HP > 0;
    }
}

public class Planet : StaticBody3D, IDamageable
{
    [Export]
    public float HP { get; private set; } = 10;

    public bool ApplyDamage(float damage)
    {
        HP -= damage;
        if (HP <= 0)
        {
            EmitSignal(SignalName.Killed); // SignalName.Killed doesn't exists
        }
        return HP > 0;
    }
}

在 C# 界面中定义 Godot 信号是否有任何可能的方法?

C# 事件 委托 Godot Godot4

评论

0赞 Theraot 11/1/2023
我不知道这是否受支持。尝试使用信号的名称 (即 ),请参见 gamedev.stackexchange.com/a/207026/10408String"Killed"

答: 暂无答案