本日は 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 の参照を自動で設定することができました。