首页 > 解决方案 > 这个脚本资源密集吗?如果是这样,如何改进?

问题描述

这是一个简单的脚本,可以在我的游戏中转动锯片。问题是现场一次大约有 18 个活动刀片。我试图消除任何滞后的可能性。这让我想知道在“更新”中使用这样的脚本是否会导致延迟?

public class SawBladesRotate : MonoBehaviour
{
    public bool GameOver;
    public GameObject Player;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        GameOver = Player.GetComponent<PlayerController>().GameOver; 
        if(GameOver == false)
        {
            transform.Rotate(new Vector3(0, 0, -45) * Time.deltaTime);
        }

    }
}

标签: c#unity3d

解决方案


Start把它作为类字段放在方法的顶部

private PlayerController playerController;

这变成Start

playeController = Player.GetComponent<PlayerController>()

然后重新使用参考:

private void Update()
{
    if(playerController.GameOver) return;

    //...
}

其余的都很好,但当然它总是完全取决于你的用例。

更有效的是直接在统一中引用组件:

[SerializeField] private PlayerController playerController;

现在您可以简单地将 Player GameObject 拖放到 Inspector 中的该字段中,并且可以摆脱GetComponent调用。


推荐阅读