以下は VContainer とインターフェースを利用して、ゲームの初期化処理を行う際の実装例です。
<= クリックすると開きます
using UnityEngine;
using VContainer;
public interface IInitializable
{
void Initialize();
}
public class GameInitializer : MonoBehaviour
{
[Inject] private IInitializable[] initializables;
private void Start()
{
foreach (var initializable in initializables)
{
initializable.Initialize();
}
}
}
上記のコードでは、IInitializableインターフェースを実装したクラスをVContainerで自動的に取得し、Start関数内でInitialize関数を順次呼び出しています。
GameInitializerには、インスペクター上でInject属性を付けることで、
ゲーム開始時にVContainerがIInitializableを実装したクラスを自動的に取得し、initializablesに格納します。
その後、foreach文を使ってinitializables内の全てのオブジェクトに対してInitialize関数を呼び出し、ゲームの初期化処理を行っています。