【发布时间】:2018-05-05 17:14:11
【问题描述】:
所以我有这个脚本可以很好地影响另一个脚本。它附加到一个游戏对象(一个攻击箱)上,该对象会损坏另一个游戏对象(一个敌人)。它使敌人的游戏对象执行动画(它受到伤害)并带走一定的生命值。这一切都很好。
我坚持的是,我试图让它对不止一种类型的敌人做同样的事情,因此,访问多个脚本。脚本是相对相同的,我已经单独测试了它们并且都工作正常。但是,当我尝试将脚本附加到我的攻击箱,影响多个脚本时,我什么也得不到。我认为这只是它的输入方式,我已经尝试了几种方法。但我已将其恢复为最简单的形式以在此处显示。如何让这个脚本同时适用于两者,这样我就不必将多个脚本附加到一个 hitbox 上?
我应该提到,在这个脚本中,它确实访问了 OnTriggerEnter2D 函数中提到的第一个脚本。对于后面提到的任何其他脚本,它只是不这样做。
using UnityEngine;
using System.Collections;
public class slicer : MonoBehaviour {
public int damage = 5;
private foeHP foe;
private goblin gobby;
public float timer;
void Update()
{
Destroy ();
timer -= Time.deltaTime;
}
public void OnTriggerEnter2D (Collider2D other)
{
if (other.gameObject.tag == "Enemy") {
other.gameObject.GetComponent<foeHP> ().takeDamage (damage);
var foe = other.GetComponent<foeHP> ();
other.gameObject.GetComponent<goblin> ().takeDamage (damage);
var gobby = other.GetComponent<goblin> ();
}
if (foe == null) {
return;
}
if (gobby == null) {
return;
}
}
public void Destroy(){
if (timer <=0)
Destroy(gameObject);
}
}
【问题讨论】:
标签: c# triggers null return 2d