Version: Unity 6.0 (6000.0)
言語 : 日本語
シーンテンプレートの編集
シーンテンプレートの設定

新規シーン作成のカスタマイズ

Unity でテンプレートから新しいシーンをインスタンス化する際にカスタムコードを実行するには、Scene Template Pipeline スクリプトを作成し、テンプレートに接続します。テンプレートから新しいシーンを作成するたびに、Unity ではパイプラインスクリプトの新しいインスタンスも作成されます。

スクリプトをテンプレートに接続するには、以下を行います。

  1. テンプレートを調べてプロパティを編集します。
  2. Scene Template Pipeline プロパティを設定して、Scene Template Pipeline スクリプトを指すようにします。

SceneTemplateAsset.templatePipeline メソッドを使用して、C# 経由でスクリプトをテンプレートに接続することもできます。

Scene Template Pipeline スクリプトは、`ISceneTemplatePipeline` インターフェースか `SceneTemplatePipelineAdapter` から派生する必要があり、以下のコードの BeforeTemplateInstantiationAfterTemplateInstantiation など、反応するイベントを実装する必要もあります。

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 イベントをトリガーします。

インスタンス化の手順は以下の通りです。

  1. New Scene ダイアログCreate をクリックします。以下が呼び出されます。
    • シーンテンプレートアセット。
    • テンプレートシーン。テンプレートに紐づいた Unity シーンです。
    • 新しいシーン。テンプレートシーンの新しいインスタンスです。
  2. テンプレートアセットの ISceneTemplatePipeline.BeforeTemplateInstantiation イベントがトリガーされ、アセットはトリガーされた ISceneTemplatePipeline スクリプトにバインドされます。

  3. SceneTemplate.NewTemplateInstantiating イベントがトリガーされます。

  4. テンプレートシーンのコピーである新しいシーンが作成されます。

  5. 新しいシーンと同じ名前のフォルダーが作成され、クローン可能な依存関係はすべてそのフォルダーに複製されます。

  6. 新しいシーンがメモリ上に開き、以下のイベントがトリガーされます。
  7. クローン可能なすべてのアセットへの参照が再マップされ、新しいシーンがクローンをポイントするようになります。

  8. 新しいシーンが保存され、以下のイベントがトリガーされます。
  9. テンプレートアセットの ISceneTemplatePipeline.AfterTemplateInstantiation がトリガーされ、アセットはトリガーされた ISceneTemplatePipeline スクリプトにバインドされます。

  10. SceneTemplate.NewTemplateInstantiated イベントがトリガーされます。


シーンテンプレートの編集
シーンテンプレートの設定