【发布时间】:2017-06-30 16:46:33
【问题描述】:
我正在制作一个无尽的射击游戏,子弹只是一个向前移动的物体,直到它击中某物。
所有敌人都有一个带有 HP 的脚本。
我想知道这样做是否很昂贵:
void OnCollisionEnter2D(Collision2D collision) {
if(TagsAndHashes.IsTagEnemy(collision.transform.tag))
DamageHandler.CauseDamage(collision.gameObject.GetComponent<EnemyBehavior>());
}else{
pool.ReturnObject(gameObject);
}
这样每次玩家射击敌人时我都会调用GetComponent<EnemyBehavior>()。
是太贵了还是没问题?
该游戏适用于移动设备。
谢谢。
【问题讨论】:
-
你告诉我们。我们不能为您的游戏使用分析器。自己检查看看有多贵。
-
在碰撞回调函数中使用
GetComponent时可以,但在Update函数中使用时不好。如果您仍然不想使用它,那么您实际上可以使用Dictionary来执行此操作。我在this 帖子中描述了同样的问题。 -
调用 GetComponent() 并不昂贵。您只是想避免一直这样做(例如在 Update 方法中)。所以你“可能很好”,尽管如上所述有更有效的方法。