Unity 6.3
0 онлайн 111 гостей 3 в системе
Вход
Сцены Шаг 40 из 48

Настройка создания новой сцены

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

Чтобы подключить скрипт к шаблону:

  1. Осмотрите шаблон, чтобы изменить его свойства.
  2. Установите свойство Scene Конвейер шаблона так, чтобы оно указывало на ваш скрипт Scene Template Pipeline.

Вы также можете использовать методы SceneTemplateAsset.templatePipeline для подключения скрипта к шаблону через C#.

Скрипт конвейера шаблона Scene должен быть получен из ISceneTemplatePipeline интерфейс или SceneTemplatePipelineAdapter. Он должен реализовывать события, на которые вы хотите отреагировать; например, BeforeTemplateInstantiation или AfterTemplateInstantiation в коде ниже.

Пример:

using UnityEditor.SceneTemplate;
using UnityEngine;
using UnityEngine.SceneManagement;
public class DummySceneTemplatePipeline : ISceneTemplatePipeline
{
    public void BeforeTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset, bool isAdditive, string sceneName)
    {
        if (sceneTemplateAsset)
        {
            Debug.Log($"Before Template Pipeline {sceneTemplateAsset.name} isAdditive: {isAdditive} sceneName: {sceneName}");
        }
    }

    public void AfterTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset, Scene scene, bool isAdditive, string sceneName)
    {
        if (sceneTemplateAsset)
        {
            Debug.Log($"After Template Pipeline {sceneTemplateAsset.name} scene: {scene} isAdditive: {isAdditive} sceneName: {sceneName}");
        }
    }
}

Scene Последовательность экземплярирования шаблона

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

После создания новой сцены Unity выполняет следующие действия:

  1. Создает ассет шаблона сцены, сцену шаблона, связанную с шаблоном, и новый экземпляр сцены шаблона.

  2. Запускает событие ISceneTemplatePipeline.BeforeTemplateInstantiation для ассета шаблона и привязывает ассет к скрипту ISceneTemplatePipeline, который он запускает.

  3. Вызывается событие SceneTemplate.NewTemplateInstantiating.

  4. Создает новую сцену, которая является копией шаблонной сцены.

  5. Создает папку с тем же именем, что и новая сцена, и копирует в нее все клонируемые зависимости.

  6. Открывает новую сцену в памяти и вызывает следующие события:
  7. Пересопоставляет ссылки на все клонируемые ассеты, так что новая сцена указывает на клоны.

  8. Сохраняет новую сцену и вызывает следующие события:
  9. Запускает ISceneTemplatePipeline.AfterTemplateInstantiation для ассета шаблона и привязывает ассет к скрипту ISceneTemplatePipeline, который он запускает.

  10. Вызывается событие SceneTemplate.NewTemplateInstantiated.

Дополнительные ресурсы