Unity中的C#事件

时间:2016-09-30 16:54:44

标签: c# events unity5

我有两个脚本连接到两个不同的游戏对象,其中一个我有Action这样:

public class EnemeyController : MonoBehavior
{
    internal Action EnemyWaveKilled;

    private void OnTriggerEnter2D(Collider2D other)
    {
        // If hit by a bullet, kill and raise the event
        EnemyWaveKilled?.Invoke();
    }
}

在我的其他脚本的Start方法中,我尝试以这种方式订阅此事件:

public class GameController : MonoBehavior
{
    internal int PlayerLevel;

    private void Start()
    {
        _enemyController = GameObject.FindWithTag("Enemy").GetComponent<EnemyController>();
        _enemyController.EnemyWaveKilled += () => PlayerLevel++;
    }
}

我在场景中有3个游戏对象都带有标记Enemy

现在,似乎我的GameController以某种方式随机订阅了该事件。

为了更准确,如果我在EnemyWaveKilled.Target课程的EnemyController方法中打印Update(),则会显示一行代表GameController,两行代表null }})

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我想我知道发生了什么。我有3个具有相同标签的对象,但我只订阅了其中一个;这就是为什么我看到两个 null 值(以及一个非 null 值)

&#xA;