【发布时间】:2014-02-24 15:45:35
【问题描述】:
我的简单脚本应该跟随玩家,但它停止查找带有“玩家”标签的游戏对象... 我能找到的唯一解决方案是制作一个新标签,将其分配给我的播放器,然后更改所有脚本中的标签名称。
我找到了另一种查找播放器对象的方法,我更喜欢它,但我是新手,不知道它是否会影响性能。 这是我无法正确找到标签的原始代码
public Vector3 offset;
private Transform player;
void Awake (){
player = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update (){
transform.position = player.position + offset;
}
如果我将其公开,以便我可以将我的播放器对象拖到检查器中的脚本上,这会影响性能吗?这不是一个好主意吗?
我的常识告诉我这是一种不好的方法,因为我看过其他人的脚本并且他们使用 FindGameObjectWithTag()。既然可以这样写,为什么还要麻烦写额外的行...
public Vector3 offset; // The offset at which the Health Bar follows the player.
public Transform player; // Reference to the player.
void Update ()
{
transform.position = player.position + offset;
}
有人请告诉我,因为我是新手,我不想一开始就以错误的方式做事。谢谢!
【问题讨论】:
-
我同意你的观点,第二个代码示例更简洁
-
它会影响性能,第二个脚本要快得多,因为它已经有了参考。第一个脚本必须迭代场景中的所有对象,比较它们的标签。你真的应该尽可能避免这种情况,并且只在真正动态的情况下使用它。
标签: c# performance unity3d monodevelop