環境
Unity 2019.3.7f1
はじめに
ネットでやりたい処理内容を探していると
・gameObject
・transform
・tag
こいつら唐突にでてきませんか?
あれ?いつ取得したの?とりあえず動くからいいか・・・
でもなんかもやもや。。。
今回はそんなもやもやを解決します!
結論
ゲームオブジェクトにスクリプトをアタッチすると、
そのスクリプトはアタッチされたゲームオブジェクトの
・ゲームオブジェクトクラス
・トランスフォームクラス
・タグ
の情報を勝手に取得します。
そして、その呼び出し呪文が
・gameObject
・transform
・tag
なわけです。
なので、
スクリプトをアタッチしたゲームオブジェクトのみ、
ゲットコンポーネント不要でゲームオブジェクトの情報やトランスフォームの情報を操作できるのです!
具体例をみていきましょう。
具体例
それぞれの値の中身を見てみましょう。
まず、空のオブジェクトを作成します。
(名前はobject123に変更してみました)
スクリプトを作成し、先程のオブジェクトにアタッチします。
(名前はtestにしました)
コードはこちら
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
void Start()
{
Debug.Log("gameObject="+gameObject);
Debug.Log("transform="+transform);
Debug.Log("tag="+tag);
}
}
実行結果
コンポーネントを取得してないのにそれぞれの情報が入っていることがわかりますね。
実際に使ってみる
では、実際にこれらの情報を使って処理してみましょう。
処理したい内容
・gameObjectを使ってオブジェクトの名前を変える
・transformを使ってオブジェクトの位置を変える
・tagを使ってタグの名前を変える
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
void Start()
{
gameObject.name = "123";//このスクリプトがアタッチされたオブジェクトの名前を変更
transform.Translate(1, 2, 3);//このスクリプトがアタッチされたオブジェクトの位置を変更
tag = "Player";//このスクリプトがアタッチされたオブジェクトのタグ名を変更 タグはあらかじめ用意しておく必要有り
}
}
実行結果
オブジェクト名、タグ名、オブジェクト位置が変更できました。
おわりに
今回紹介した呪文たちをみたら、
スクリプトがアタッチされたオブジェクトについて
なにかしらの処理をしてるんだなーと考えると良いと思います。
良いUnityライフを!