我正在创建一个简单的脚本,它告诉游戏对象它需要在定义的距离内跟随其他游戏对象。
代码:
void Update()
{
objPos = GameObject.FindGameObjectWithTag("Player").transform.position;
transform.position = new Vector3(objPos.x + 0.5f, objPos.y + 0.5f);
}
问题是:下面的游戏对象在闪烁。当您观看它时,它似乎落后于跟随的游戏对象几帧。我之前在我早期的原型(prototype)中注意到它,但现在它对我的新游戏至关重要。所以我认为这是很普遍的问题。
是否有针对这种不良行为的解决方案?
谢谢
最佳答案
GameObject.FindGameObjectWithTag("Player") 具有很高的性能成本,而不是每帧都使用它,而是保存一个玩家实例。如果玩家在场景中保持不变,
public Transform playerTransform;
void Update()
{
transform.position = playerTransform.position + new Vector3(0.5f, 0.5f);
}
然后使用检查器将 Unity 编辑器中的 Player 转换分配给该对象。 (或者在代码中动态)
如果您的 Player 对象被销毁并且偶尔会实例化一个新的对象,您可以将新的对象分配给 follower 对象,或者使用像这样的简单访问器方法:
Transform _playerTransform;
Transform playerTransform
{
get
{
if(_playerTransform == null)
{
_playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
}
return _playerTransform;
}
}
void Update()
{
transform.position = playerTransform.position + new Vector3(0.5f, 0.5f);
}
关于c# - Unity 2D - Sprite 在跟随物体时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297662/