从此接口派生以在实例化场景模板时打包自定义代码序列。当实例化模板时,ISceneTemplatePipeline 会被实例化一次,并在实例化序列期间多次收到通知。
using UnityEngine.SceneManagement; using UnityEditor.SceneTemplate;
public class MySceneTemplatePipeline : ISceneTemplatePipeline { public virtual bool IsValidTemplateForInstantiation(SceneTemplateAsset sceneTemplateAsset) { // Check if the scene template is valid for this project. return true; }
public virtual void BeforeTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset, bool isAdditive, string sceneName) { // Do some work before instantiating the new scene based on the template. UnityEngine.Debug.Log($"BeforeTemplateInstantiation {sceneTemplateAsset.name} isAdditive: {isAdditive} sceneName: {sceneName}"); }
public virtual void AfterTemplateInstantiation(SceneTemplateAsset sceneTemplateAsset, Scene scene, bool isAdditive, string sceneName) { // Do some work after instantiating the new scene. UnityEngine.Debug.Log($"AfterTemplateInstantiation {sceneTemplateAsset.name} scene: {scene} isAdditive: {isAdditive} sceneName: {sceneName}"); } }
AfterTemplateInstantiation | 在实例化场景模板后且新场景仍在加载时调用的事件。 |
BeforeTemplateInstantiation | 在实例化场景模板之前调用的事件。 |
IsValidTemplateForInstantiation | 在显示“新建场景”对话框之前调用的事件,以确定此模板是否在对话框中可用。 |