Является ли этот скрипт ресурсоемким? Если так, как можно улучшить? - PullRequest
0 голосов
/ 06 июля 2019

Это простой скрипт, который превращает лезвие пилы в мою игру.Проблема в том, что на сцене одновременно находится около 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 Ответ

1 голос
/ 06 июля 2019

Поместите это поверх метода Start как поле класса

private PlayerController playerController;

и это в Start:

playeController = Player.GetComponent<PlayerController>()

Затем повторно используйте ссылку:

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

    //...
}

В остальном все в порядке, но, конечно, это всегда полностью зависит от вашего варианта использования.

Еще эффективнее было бы напрямую ссылаться на Компонент в единстве:

[SerializeField] private PlayerController playerController;

Теперь вы можете просто перетащить PlayerObject Player в это поле в Инспекторе и избавиться от вызова GetComponent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...