MonoBehaviour を継承したクラスで transform や rigidbody を使用するときの注意として
transform や rigidbody は内部で毎回 GetComponent しているようです
そうなると、これらのプロパティにアクセスするたびに
GetComponent が実行されることになるので処理が少し遅くなってしまいます
僕はそれを防ぐたびに transform や rigidbody に初めてアクセスされた時にだけ
GetComponent をする MonoBehaviour を用意して使っています
using UnityEngine; public class MonoBehaviourCustom : MonoBehaviour { private Transform mTransform; private Rigidbody mRigidbody; /// <summary> /// Transform コンポーネントを返します /// </summary> public new Transform transform { get { // 初めてアクセスされた時にだけ GetComponent する if ( mTransform == null ) { mTransform = GetComponent<Transform>(); } return mTransform; } } /// <summary> /// Rigidbody コンポーネントを返します /// </summary> public new Rigidbody rigidbody { get { // 初めてアクセスされた時にだけ GetComponent する if ( mRigidbody == null ) { mRigidbody = GetComponent<Rigidbody>(); } return mRigidbody; } } }
using UnityEngine; public class Example : MonoBehaviourCustom { private void Update() { transform.Translate( Vector3.one ); rigidbody.AddForce( Vector3.one ); } }