Unity游戏落后

时间:2014-01-24 10:36:12

标签: c# unity3d lag

我有一个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;

1 个答案:

答案 0 :(得分:2)

是否减少帧将使其更快,您可以进行测试。我的猜测是肯定的,但它仍然不是我接近它的方式。理想情况下,您根本不想拥有单独的纹理。

切换纹理成本很高。您不希望每帧都这样做。您可能想要了解的是将所有帧组合到地图集(或精灵表)中。也就是说,一个大的纹理,包含所有较小的纹理。你可以用TexturePacker做的事情。

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