【Unity】ExecuteAlwaysについて

Unityで使うc#のクラスでは色々なAttributeを定義することができます。 その中で「ExecuteAlways」というAttributeがあります。

docs.unity3d.com

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に関しても何かしらできそうだなと感じました。