Для запуска пользовательского кода, когда Unity создает новую сценуСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Посмотрите в Словарь из шаблона, создайте скрипт конвейера шаблона сцены и подключите его к шаблону. Каждый раз, когда вы создаете новую сцену из шаблона, Unity также создает новый экземпляр скрипта конвейера.
Чтобы подключить скрипт к шаблону:
- Проверьте шаблон, чтобы изменить его свойства.
- Настройте свойство Конвейер шаблонов сцен, чтобы оно указывало на сценарий конвейера шаблонов сцен.
Для подключения сценария к шаблон через C#.
Сценарий конвейера шаблона сцены должен быть производным от интерфейса [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}");
}
}
}
Последовательность создания шаблона сцены
При создании новой сцены из шаблона с клонируемыми зависимостями
См. в Словарь, Unity выполняет несколько файловых операций. Большинство этих операций инициируют события Unity, которые вы можете прослушивать и реагировать на них в скриптахфрагменте кода, который позволяет вам создавайте свои собственные Компоненты, инициируйте игровые события, изменяйте свойства Компонентов с течением времени и реагируйте на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь.
Последовательность создания экземпляра следующая:
- Вы нажимаете Создать в диалоге "Новая сцена". Unity вызывает:
- Ресурс шаблона сцены.
- Шаблон сцены. Это сцена Unity, связанная с шаблоном.
- Новая сцена. Это новый экземпляр шаблона Сцена.
Unity запускает событие
ISceneTemplatePipeline.BeforeTemplateInstantiation
для ресурса шаблона и привязывает ресурс к скриптуISceneTemplatePipeline
. которые он запускает.Unity запускает событие
SceneTemplate.NewTemplateInstantiating
.Unity создает новую сцену, которая является копией сцены шаблона.
Unity создает папку с тем же именем, что и новая сцена, и копирует все клонируемые зависимости в эту папку.
- Unity открывает новую сцену в памяти и запускает следующие события:
EditorSceneManager.sceneOpening
-
MonoBehavior.OnValidate
(для всех объектов GameObject, которые его реализуют) EditorSceneManager.sceneOpened
Unity переназначает ссылки на все клонируемые ресурсы, поэтому новая сцена указывает на клоны.
- Unity сохраняет новую сцену и запускает следующие события:
Unity запускает
ISceneTemplatePipeline.AfterTemplateInstantiation
для ресурса шаблона и привязывает ресурс к скриптуISceneTemplatePipeline
, который это срабатывает.Unity запускает событие
SceneTemplate.NewTemplateInstantiated
.