コンポーネントへのアクセス

コンポーネント

コンポーネントってRigidbodyとかColliderのことですよね?これを追加したり、値を変更したりすることで、ゲームオブジェクトに新たな動きを加えたり、与えることができると思っています。あってるはず(笑)

コンポーネントにアクセス

コンポーネントをいじくるためには、クラスのインスタンスであるコンポーネントの参照を取得する必要がある。そこで登場するのGetComponent関数。

 

Transform trans; 

void Start() {

      trans = GetComponent<Transform>(); // コンポーネントを参照

}

void Update() {

      trans.position += Vector3.forward * Time.deltaTime; // 奥に移動

}

 

みたいな感じで使ってます。

と思っていて色々試していたのですが、一つ疑問が生まれました。

 

Transform trans;

void Start() {

      trans = GetComponent<Transform>();

}

void Update() {

      trans.position += Vector3.forward * Time.deltaTime; 

      transform.position += Vector3.forward * Time.deltaTime; // これだけで動く

}

 

「あれ、これだけで動いた!!」

Rigidbodyなどは、ちゃんとGetComponent関数で参照してからでないと使えなかったのですがTransformは「transform.~」みたいにいきなり使えました。今までは意識せずにとりあえずGetComponentして変数に取っておいてそこから使っていたので気が付きませんでした。

僕の考えではTransformはすべてのGameObjectが必ず持っているものなので参照しなくてもいいよみたいな・・・。

分かる方はコメントしていただけると幸いです。

僕流のまとめ

他にも、用途によっていろいろできそうなので機会があれば記事にしたいと思います。