質問: transform.position.magnitude; } } ``` こういうソースがあって、magnitudeには原点からの値が入っているので、 毎回AddCompornetnするたびにメニューからSetMagnitudeを選ぶんですが、 これを自動化したいです。 この値は、基本的に原点からの距離が入っていますが、 調整したいときにこの値をいじる、という感じで使います。 ### 補足情報(FW/ツールのバージョンなど) Unity2018を使っています
回答: Unityのイベント関数(StartやUpdate)に`Reset()`というものがあります。 > > MonoBehaviour.Reset() > > 説明 > > デフォルト値にリセットします > > > Reset はインスペクターのコンテキストメニューにある Reset ボタンやコンポーネントを初めて追加するときに呼び出されます。 この関数はエディターモードのみで呼び出されます。Reset はインスペクターでデフォルト値を設定するときにもっともよく使用されます。 > > > 引用元: MonoBehaviour.Reset() - Unity スクリプトリファレンス > > > この関数は、**エディタ上でスクリプトをアタッチした時、歯車マークをクリックして出るメニューのResetを押したとき**に呼ばれます。 この関数を使えば簡単にスクリプトアタッチ時に処理をできます。 ソースコード ``` using UnityEngine; public class ObjectDistance : MonoBehaviour { public float magnitude; private void Reset() { SetMagnitude(); Debug.Log("Set"); } public void SetMagnitude() { magnitude = transform.position.magnitude; } } ``` 注意点 Reset関数は**実行されていないエディタで**呼び出されます。 逆に言えば、実行している時や実際にビルドして遊ぶ時には呼ばれません。