假设我有两个实体,一个玩家和一个敌人。他们每个人都有自己的C#脚本。在敌人身上,它有以下基本的健康管理代码:
[SerializeField] float health = 3; public void TakeDamage(float damage) { health -= damage; if (health <= 0) { Destroy(gameObject); // SOME EVENT HERE? } }
我想让玩家知道他杀死了敌人(以及他摧毁了哪个敌人)。然而,我不确定如何做到这一点。我研究了几种方法:
- 行动/代表;他们会要求玩家从敌人那里“导入”一个公共动作/委托(如果我理解正确的话;我对C#还是新手),我不希望这两件事之间有依赖关系。。。它们在概念上不相关;我不需要从玩家的敌人“导入”。
- 使用Unity事件(如在UI中配置的事件,例如按钮OnClick());这也不起作用,因为玩家和敌人都可能在运行时实例化,而不是预定义的。
在我的脑海中,我想象着Player脚本会有这样的内容:
void OnEnemyDestroyed(GameObject enemy) { ...do things in reaction to enemy death here... }
这可能吗?