Unity имеет серьезную проблему: передачу данных между сценами. Часто возникает ситуация, когда нужно запустить игровую сцену из меню, передав ей настройки. Представленный плагин решает эту проблему.
Работа плагина
Плагин генерирует для каждой сцены в Unity класс, позволяющий взаимодействовать со сценой через вызов методов и передачу аргументов. Загрузка сцены и передача данных выполняются плагином.
Установка плагина:
- Скачайте мастер-ветку репозитория (ссылка в описании).
- Распакуйте скачанный архив.
- Перетащите папку plug-ins из архива в папку Assets вашего проекта Unity.
- При возникновении ошибки перейдите в File > Build Settings, измените версию .NET с 2.0 на 4.0 и перезагрузите проект.
- Перезагрузите и реимпортируйте проект.
В папке Type появятся классы, соответствующие вашим сценам. Эти классы обеспечивают доступ к сценам из кода.
Пример использования
Создадим сцену SampleScene и добавим в нее компонент, например, Menu. В этом компоненте напишем метод для загрузки сцены, использующий сгенерированный плагином класс для SampleScene.
Для доступа к сгенерированным классам используется пространство имен плагина. Например, для загрузки SampleScene вызывается метод Load класса SampleScene.
Важно: Добавьте загружаемую сцену в Build Settings.
Параметризированные сцены
Плагин поддерживает передачу параметров в загружаемые сцены. Для этого создается C# скрипт, например, SimpleSceneParams, наследующий интерфейс ISceneParams из пространства имен плагина. Этот интерфейс позволяет указать необходимые данные для запуска сцены.
Например, можно передать целое число, определяющее количество игроков:
public class SimpleSceneParams : ISceneParams
{
public int PlayerCount { get; set; }
}
После сохранения сцены плагин анализирует её. Если обнаружен компонент, реализующий ISceneParams, он добавляет в соответствующий класс сцены метод Load, принимающий указанные параметры.
В нашем примере, после добавления SimpleSceneParams в SampleScene, в классе SampleScene появится метод Load, принимающий int аргумент.
Запуск сцены с параметрами
Теперь можно запустить SampleScene из меню, передав ей параметр:
SampleScene.Load(10); // Запуск SampleScene с параметром 10
Этот параметр будет доступен в SampleScene через метод OnSceneLoaded интерфейса ISceneParams.
Этот плагин предлагает более отказоустойчивый и формализованный подход к загрузке сцен в Unity, чем стандартные методы. Преимущества, которые он предоставляет, стоят затраченных усилий. Обратите внимание, что текущая версия плагина является тестовой.