シーンコンテクスト空間
シーン全体を一つの大きなコンテクストで包みます。シーンコンテクスト空間が生成されるタイミングのは以下の場合です。
AutoContextLoader を使ってロードする
コンテクスト空間内の任意の場所に、 AutoContextLoader コンポーネントを配置することで、 そのコンテクスト空間の子となるシーンコンテクストやゲームオブジェクトコンテクストをロードできます。
インスペクタの Scene Contexts にロードしたいシーンを指定することで、 AutoContextLoaderの属するコンテクスト空間がロードされた後、自動的に子コンテクストがロードされます。

SceneContextLoader を使ってシーンをロードする
各コンテクスト空間に属する DIコンテナには、必ず SceneContextLoader が提供されます。 SceneContextLoader.LoadAsync() にて別のシーンをロードすることで、現在のコンテクストの子となるシーンコンテクストを生成することができます。 SceneContextLoader は、DIコンテナに自動的に登録されるため、 必要な場所で注入してもらいます。
子コンテクストとなるシーンを、ロードするコンポーネントを作ってみましょう。
public class LoadChildScene : MonoBehaviour, IInjectableComponent
{
[SerializeField] UnifiedScene childScene;
SceneContextLoader sceneContextLoader;
[Inject]
public async Task Construct(SceneContextLoader sceneContextLoader)
{
this.sceneContextLoader = sceneContextLoader;
}
[OnInjected]
public async Task OnInjected()
{
await sceneContextLoader.LoadAsync(childScene, active: true);
}
}
このコンポーネントを、シーンに配置し、インスペクタより childScene にシーンを指定することで、 そのシーンをロードできます。
動作確認
LoadChildScene を EntryPoint となるシーンに配置したら、実行してみましょう。 EntryPoint となるシーンがロードされると、子シーンがロードされることが確認できます。
DI Context Tree を確認すると、親子関係を持ったシーンコンテクストが生成されていることが確認できます。
Last modified: 26 July 2025