我有两个脚本连接到两个不同的游戏对象,其中一个我有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
}})
非常感谢任何帮助
答案 0 :(得分:0)
我想我知道发生了什么。我有3个具有相同标签的对象,但我只订阅了其中一个;这就是为什么我看到两个 null
值(以及一个非 null
值)