表示コンポーネントのOverride


投稿日:2021年2月22日 | 最終更新日:2024年5月26日

宴で用意されている表示コンポーネントを継承して、自作カスタムコンポーネントを使用したい場合は、以下の2つのやり方あります。

継承したクラスのサンプル

AdvGraphicObjectAvatarを継承したコンポーネントを自作する場合のサンプルです。

public class AdvGraphicObjectAvatarCustom : AdvGraphicObjectAvatar
{
    protected override void AddGraphicComponentOnInit()
    {
        //初期化処理などを自作
    }
}

その1 プログラム上から動的にコンポーネントを変える場合

AdvGraphicInfo.CallbackCreateCustomというコールバックにメッソドを登録することで
FileTypeごとによって使用するコンポーネントを変更することができます。

        private void Awake()
        {
            AdvGraphicInfo.CallbackCreateCustom += CreateCustom;
        }

        private void CreateCustom(string filetype, ref Type type)
        {
            switch (filetype)
            {
                case AdvGraphicInfo.FileTypeAvatar:
                    //アバタータイプのコンポーネントを自作のものに変える
                    type = typeof(AdvGraphicObjectAvatarCustom);
                    break;
                default:
                    break;
            }
        }

その2 Overrideしたコンポーネントを使ったプレハブを利用する場合

さらに複雑なケースの場合は、プレハブを利用します。
表示用のプレハブを作成して、Resources以下に置きます。
プレハブは、いったん標準コンポーネントを使った通常の描画処理を行って、そのシーンで作成されたGameObjectからPrefabを作成すると楽にできます。

サンプル

表示する際は、FileTypeにOverridePrefabにして、プレハブのパスを指定します。

注意点

Overrideは宴の内部クラスの挙動に強く依存してしまいます。
基本的にはあまりしない予定ではあるのですが、更新によって互換性がとれなくなってしまう可能性も高いので、アップデートの際には十分注意してください。
また、基本的には上級者向けの特殊処理のため必要となるプログラムに関してのドキュメントは用意できません。細かいプログラムの書き方などはソースコードを読み解いてください。