Как я могу предотвратить повторение этого кода для оптимизации моей игры в каждой сцене? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь оптимизировать графику игры, которую создаю в Unity, и нашел этот код, который улучшает мой FPS, но я не знаю, почему каждый раз, когда он меняет сцену, он выполняется снова.Я пытался с DontDestroyOnLoad ... создать логическое значение, чтобы эта часть могла быть выполнена только один раз ... но ничего.

Код такой:

[SerializeField]
float factor = 0.5f;

    void Start ()
    {   
      Screen.SetResolution(
      Mathf.CeilToInt(Screen.currentResolution.width * factor),
      Mathf.CeilToInt(Screen.currentResolution.height * factor), true);
    }

Что я могу бытьделать неправильно?Спасибо, привет.

1 Ответ

1 голос
/ 04 апреля 2019

Особенность DontDestroyOnLoad заключается в следующем: в любом случае, если вы снова загрузите ту же сцену (или любую другую сцену, содержащую этот компонент), она будет запущена снова, если вы не объедините ее с «singleton» -шаблоном для создания уверен, что всегда существует только один из этого компонента.


Но в вашем случае вы могли бы вместо этого просто использовать static bool (статические значения сохраняются для всего выполнения приложения)

[SerializeField] private float factor = 0.5f;

private static bool alreadySetResolution;

private void Start()
{   
    if(!alreadySetResolution) SetResolution();
}

private void SetResolution()
{
    Screen.SetResolution(
        Mathf.CeilToInt(Screen.currentResolution.width * factor),
        Mathf.CeilToInt(Screen.currentResolution.height * factor), 
        true
    );

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