Unity中的c#事件
本文关键字:事件 中的 Unity | 更新日期: 2023-09-27 18:09:55
我有两个脚本附加到两个不同的游戏对象,其中一个我有这样的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
似乎以某种方式随机订阅了该事件。
更准确地说,如果我在EnemyController
类的Update()
方法中打印EnemyWaveKilled.Target
,它会显示一行表示它是GameController
,两行表示它是null
)
任何帮助都非常感谢
我想我知道是怎么回事了。我有3个相同标签的对象,但我只订阅其中一个;这就是为什么我看到两个null
值(和一个非null
值)