Передача данных между сценами Unity: эффективный плагин

Unity имеет серьезную проблему: передачу данных между сценами. Часто возникает ситуация, когда нужно запустить игровую сцену из меню, передав ей настройки. Представленный плагин решает эту проблему.

Работа плагина

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

Установка плагина:

  1. Скачайте мастер-ветку репозитория (ссылка в описании).
  2. Распакуйте скачанный архив.
  3. Перетащите папку plug-ins из архива в папку Assets вашего проекта Unity.
  4. При возникновении ошибки перейдите в File > Build Settings, измените версию .NET с 2.0 на 4.0 и перезагрузите проект.
  5. Перезагрузите и реимпортируйте проект.

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

Что будем искать? Например,программа