GetComponent计算损坏

时间:2017-06-30 07:50:19

标签: c# unity3d

我正在进行一场无尽的射击游戏,子弹只是一个前进的物体,直到碰到它为止。

敌人都有一个带HP的脚本。

我想知道这样做是否昂贵:

void OnCollisionEnter2D(Collision2D collision) {
    if(TagsAndHashes.IsTagEnemy(collision.transform.tag))
        DamageHandler.CauseDamage(collision.gameObject.GetComponent<EnemyBehavior>());
}else{
    pool.ReturnObject(gameObject);
}

这样每次玩家射击敌人时我都会调用GetComponent<EnemyBehavior>()

太贵了还是没事?

该游戏适用于移动设备。

感谢。

1 个答案:

答案 0 :(得分:4)

在这里翻转负责造成损害的人会更合乎逻辑,成本更低。

  1. 在敌人身上有一个检测碰撞的脚本。
  2. 让该方法检查与其发生碰撞的对象的标记。
  3. 然后使用敌人游戏对象上的脚本对自身造成伤害。
  4. 这样,脚本不必去获取另一个对象的引用,这当然是昂贵的。相反,它只是跟自己说话......就像我一样。

    希望它有所帮助。