这个脚本会占用大量资源吗?如果是这样,如何改进?

时间:2019-07-06 10:47:01

标签: c# unity3d

这是一个简单的脚本,可以在我的游戏中转动锯片。问题在于,一次在场景中大约有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);
        }

    }
}

1 个答案:

答案 0 :(得分:1)

将此方法放在Start方法顶部作为类字段

private PlayerController playerController;

并将其放入Start

playeController = Player.GetComponent<PlayerController>()

然后重新使用引用:

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

    //...
}

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

更高效的方法是直接统一引用组件:

[SerializeField] private PlayerController playerController;

现在,您只需将Player GameObject拖放到检查器中的该字段中,即可摆脱GetComponent调用。