c# - Unity 2D - Sprite 在跟随物体时闪烁

标签 c# unity3d

我正在创建一个简单的脚本,它告诉游戏对象它需要在定义的距离内跟随其他游戏对象。

代码:

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/

相关文章:

c# - 以编程方式在 DataGridView 中设置列​​宽

C#计算股票和指数之间的投资组合贝塔值

c# - 在 HoloLens 上以 30fps 访问 RGB 相机(或可定位相机)

android - Android 下 unity3d 中的 webcamTexture 旋转不同

c# - 使用 ASP.NET 自动化 Excel

c# - 从可能包含其他类型的列表中获取通用类型的所有项目的列表

c# - 将 bool 表达式字符串转换为 .NET 代码

c# - 为什么List.Add即使存在对象也返回错误 'Object reference not set to an instance of an object'?

c# - 强制模式仅适用于 Y 轴 Unity3D

unity3d - 使用Application.Quit时手游重启