LoaderのインスタンスイベントをLayerで受け取る - Katsuya100/SceneLayer-Trial GitHub Wiki

LoaderでLoadしたデータをLayerで受け取る方法について解説します。

インスタンスを受け取りたいLayerBehaviourのメンバに [LayerInstanceObjectAttribute] を設定します。

[LayerInstanceObject]
GameObject _obj;

このメンバの型と LoaderBehaviour.InstanceType の型は代入可能である必要があります。
※「カスタムした暗黙的キャスト」には非対応です。 Type.IsAssignableFrom がtrueでなければなりません。

LayerのInspectorを開き、対象のLoaderを見つけます。
[Advanced Options > Receive Field]に、先述したメンバを指定します。
※受け取り側の型が間違っている場合、選択できないので注意。
image
これで、インスタンス生成時に結果を受け取ることができます。

また、関数の引数経由で受け取ることも可能です。

[LayerInstanceObject]
private void OnInstantiatedGameObject(GameObject go)
{
  :
}

その場合、 [Advanced Options > On Instantiated]に、先述したメンバ関数を指定します。
image

LoaderBehaviour やその派生クラスのインスタンスを受け取ることも可能です。

[LayerInstanceObject]
private void OnInstantiatedGameObject(ResourcesPrefabLoader loader)
{
  :
}

破棄時も同じ[LayerInstanceObjectAttribute] を指定することでフックできます。
こちらは、 LoaderBehaviour やその派生クラスのみ受け取ることができます。

[LayerInstanceObject]
private void OnDestroyedGameObject(ResourcesPrefabLoader loader)
{
  :
}

その場合、 [Advanced Options > On Destroyed]に、先述したメンバ関数を指定します。
image