【问题标题】:Unity game is laggingUnity游戏滞后
【发布时间】:2014-01-24 19:02:14
【问题描述】:

我有一个 Unity 足球游戏(2D 自上而下视图),当玩家(用户团队)拿到球时会出现延迟。我使用 Texture2d [] 帧为播放器设置动画。我有 48 帧图像。将帧数减少到 32 帧是否会加快游戏速度?

这就是我制作动画的方式,

void Update () {
    if (players.moving == true)
    {
        if (timer > 0.0f)
            timer -= Time.deltaTime;
        if (timer <= 0.0f)
            timer = 0.0f;
        if (timer == 0.0f)
            NextFrame();
    }
    else
    {
        if (players.movingUp == true)
            renderer.material.mainTexture = frames[0]; }

public void NextFrame()
{
    if (!play)
        return;
    //test velocity direction
    if (players.movingUp == true)
    {
        if (northFrame >= 0 && northFrame <= 2)
        {
            northFrame ++;
            renderer.material.mainTexture = frames[northFrame];
        }
        else
        {
            northFrame = 0;
            renderer.material.mainTexture = frames[northFrame];
        }
        //renderer.material.mainTexture = frames[northFrame];
        //Debug.Log ("North frame: " + northFrame);
    }
}

这是我的用户播放器更新功能。

if (players[0].GetComponent<TPCCS>().highlight == true)
    {
        ring1.renderer.enabled = true;
        ring2.renderer.enabled = false;
        ring3.renderer.enabled = false;
        ring4.renderer.enabled = false;
    }

    if (players[1].GetComponent<TPCCS>().highlight == true)
    {
        ring1.renderer.enabled = false;
        ring2.renderer.enabled = true;
        ring3.renderer.enabled = false;
        ring4.renderer.enabled = false;
    }

    if (players[2].GetComponent <TPCCS>().highlight == true)
    {
        ring1.renderer.enabled = false;
        ring2.renderer.enabled = false;
        ring3.renderer.enabled = false;
        ring4.renderer.enabled = true;
    }
    rigidbody.freezeRotation = true;

【问题讨论】:

  • 动画精灵可以解决问题,michaelcummings.net/mathoms/…
  • 啊,是的,你去。我真的必须在某个时候检查 4.3 的新 2D 功能。但这确实是相同的原理。

标签: c# unity3d lag


【解决方案1】:

减少帧数是否会使其更快,由您来测试。我的猜测是肯定的,但这仍然不是我的方法。理想情况下,您根本不想拥有单独的纹理。

切换纹理的成本很高。您不想为每一帧都这样做。您可能想要查看的是将所有帧组合成一个图集(或精灵表)。也就是说,一个单一的大纹理,其中包含所有较小的纹理。例如,你可以用 TexturePacker 做一些事情。

然后,不是将纹理切换为动画,而是“动画”纹理坐标(或材质的纹理偏移)以选择要显示的更大图集的正确部分。就像你根本没有切换纹理一样,性能应该会显着提高。

【讨论】:

猜你喜欢
  • 2020-01-29
  • 2014-06-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2020-01-17
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多