我有一个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;
答案 0 :(得分:2)
是否减少帧将使其更快,您可以进行测试。我的猜测是肯定的,但它仍然不是我接近它的方式。理想情况下,您根本不想拥有单独的纹理。
切换纹理成本很高。您不希望每帧都这样做。您可能想要了解的是将所有帧组合到地图集(或精灵表)中。也就是说,一个大的纹理,包含所有较小的纹理。你可以用TexturePacker做的事情。
然后,不是将纹理切换为动画,而是“动画”纹理坐标(或材质的纹理偏移),以选择要显示的较大地图集的正确部分。就像你根本没有切换纹理一样,性能应该显着提高。