Unityで使うc#のクラスでは色々なAttributeを定義することができます。 その中で「ExecuteAlways」というAttributeがあります。
ExecuteAlways
簡単な例は次のようになります。
[ExecuteAlways] public class ExecuteAlwaysTest : MonoBehaviour { // Start is called before the first frame update void Start() { Debug.Log("Start"); } }
通常、Unityを再生しないとStartは呼び出されませんが、ExecuteAlwaysの場合 Prafabモードに移行したときや、再生が終わった時などに呼び出されます。
OnValidate
MonoBehaviourには、Onvalidateというメソッドがあり、これを使うとInspectorの変更時の更新処理ができます。
#if UNITY_EDITOR private void OnValidate() { Debug.LogError("OnValidate:" + _value); } #endif
今まではこちらを使っていたのですが、ExecuteAlwaysに関しても何かしらできそうだなと感じました。