我有一个攻击脚本,它会检查对象是否有“敌人脚本”,如下所示:
// Damage them
foreach (Collider2D enemy in hitEnemies)
{
// Debug log showing the attack connected
Debug.Log("We hit " + enemy.name);`
// the enemy takes damage from the player, could be rewritten
enemy.GetComponent<Enemy>().TakeDamage(attackDamage);
}
现在的问题是,它只检查他们对象是否有那个脚本。我还需要让它检查其中包含加载区域方法的 boss 脚本。
我可以让它只是一个 Enemy 脚本或 EnemyLoadArea 脚本。这个想法是,只有老板有 EnemyLoadArea 脚本。如果我将它从“enemy.GetComponent”更改为“enemy.GetComponent”,Unity 将不再识别损坏,敌人也不会死。
可能有更好的方法让场景在 Boss 死亡时加载,但我不知道是否有。
我在Unity里不能留空,所以敌人脚本里不能有load area code。我怎样才能让它检查两个不同的游戏对象?或者,我如何重写代码来检查 Unity 中的标签?所以它不是寻找敌人脚本,而是检查 NPC 是否被标记为敌人,然后受到伤害?
我试过使用
enemy.GetComponent<Enemy || EnemyLoadArea>().TakeDamage(attackDamage);
和
enemy.GetComponent<Enemy>().TakeDamage(attackDamage);
enemy.GetComponent<EnemyLoadArea>().TakeDamage(attackDamage);
并且还尝试重用相同的 foreach 方法,将组件从“”更改为<"EnemyLoadArea">,但它也不起作用。
我尝试过的每一个不同的修复都会返回错误,比如“|| cannot be used”,或者只是
NullReferenceException:对象引用未设置为一个实例 对象 PlayerAttack.Attack () (在 资产/脚本/播放器/PlayerAttack.cs:53) PlayerAttack.Update () (at 资产/脚本/播放器/PlayerAttack.cs:30)