Unity

Unity - порядок загрузки скриптов

В статье о сценах мы говорили, что под загрузку настроек и сохранений необходимо выделить отдельную сцену с загрузочным экраном.

Это требуется для того, чтобы реализовать грамотную загрузку скриптов, которые должны быть доступны на всех сценах приложения. Такой подход позволит избежать дублирования базовых скриптов на различных сценах.

К таким базовым скриптам можно отнести следующие составляющие проекта:
- менеджер настроек;
- аудио менеджер;
- менеджер локализаций;
- менеджер сохранений.

Если данные, которые загружает менеджер настроек, используются, к примеру, в аудио менеджере (включен или отключен звук), то в порядке загрузки менеджер настроек должен инициализироваться раньше чем аудио менеджер.

Немного разберем работу аудио менеджера, который отвечает за воспроизведение музыки и звуков.

Если по умолчанию при закрытии каждой сцены класс AudioManager будет уничтожаться, а при открытии новой заново инициализироваться, то воспроизведение музыки будет прерываться и начинаться заново.

Как раз, для того, чтобы не прерывать воспроизведение музыки, мы один раз инициализируем скрипт AudioManager на сцене загрузки и на других сценах мы его больше не подключаем, но при этом его методы остаются доступными для других скриптов на других сценах.

Для того, чтобы класс AudioManager не уничтожался после закрытия сцены загрузки, можно использовать следующую конструкцию:

  1. public class AudioManager : MonoBehaviour 
  2. {
  3.   public static AudioManager instance = null;
  4.  
  5.   void Awake ()
  6.   {
  7.       if (instance == null)
  8.       {
  9.          instance = this;
  10.       } 
  11.       else if (instance != this)
  12.       {
  13.          Destroy (gameObject);
  14.       }
  15.       DontDestroyOnLoad (gameObject);
  16.   }
  17.   ...
  18. }

Таким образом, следует заранее грамотно планировать порядок загрузки скриптов при разработке приложения и их взаимодействие.