MRが楽しい

MRやVRについて学習したことを書き残す

UnityのReset(リセット)関数を利用してコンポーネントの設定時処理を設定する

本日は Unity の小ネタ枠です。
UnityのReset(リセット)関数を利用してコンポーネントの設定時処理を設定する方法を記事にします。

MonoBehaviour.Reset()関数

Unity の MonoBehaviour.Reset() 関数はコンポーネントをデフォルト値にリセットします。
本関数は Inspector のコンテキストメニューの[Reset]ボタンを押したとき、またはコンポーネントを初めて追加したときに呼び出されます。
また本関数はエディタモードでのみ呼び出されます。
docs.unity3d.com

Transformでの利用例

例えば Transform コンポーネントの Reset 関数をコンテキストメニューから実行すると、位置/回転/スケールの値が初期化されます。


自作コンポーネントでのReset関数の利用例

Reset 関数を利用してコンポーネント設定時に RequireComponent の参照を設定する以下のサンプルスクリプトを作成しました。
・ResetTest.cs

using UnityEngine;

[RequireComponent(typeof(Collider))]
public class ResetTest : MonoBehaviour
{
    [SerializeField]
    private Collider p_Collider;

    void Reset()
    {
        p_Collider = this.GetComponent<Collider>();
    }
}

コンポーネントをオブジェクトにドラッグして設定してみます。

すると設定時に Reset 関数が実行され、RequireComponent の参照を自動で設定することができました。