FC2ブログ

記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサーリンク

Unity オブジェクトの取得

メモです。

オブジェクトA(のスクリプト)からオブジェクトBに対して何かしらの操作をしたいとき

インスペクタからオブジェクトBを指定する方法が簡単でいいですが、動的な処理?といいますか
処理を実行していく中でオブジェクトBを取得したい場合には、スクリプト上でアレコレしなくちゃならないわけですね。
最初のころ躓いた気がするのでメモしておきます。


・オブジェクトにアタッチ(添付することです)されたスクリプトから、別のオブジェクトを取得する


まずは変数を用意します。これはインスペクタからオブジェクトを指定する場合と同じですね。
一度きりしか使わないのであれば必要ありませんが、何度か使う場合には毎回書くのは面倒ですので・・・。

GameObject obj;

今回はスクリプト上で操作するので public は付けなくてOKです。

次にオブジェクトの取得ですが
簡単な方法を二つ紹介します。

void Start(){
obj = GameObject.Find("ここに取得したいオブジェクトの名前を入れる");
//※例として Start() 内に書いています。 以降省略。
}


まずオブジェクトの名前を指定して取得する方法です。
次のようにしてオブジェクト名を指定することもできます。

string str = "オブジェクト名"; //先に宣言しておく変数

obj = GameObject.Find(str); //Start() 内に記述


string型変数(文字列用の変数です)にオブジェクト名を代入しておく方法です。
引数(GameObject.Find()に引き渡す値のことです)を変数で指定する場合は""を付けないように注意。
逆にそのまま文字列を指定する場合には""を忘れないように。

どちらの場合にもオブジェクト名の大文字小文字、スペースは区別されますので正確に記述すること。


では2つ目の方法です。

obj = GameObject.FindGameObjectWithTag(""); //Start() 内に記述

こっちはオブジェクトについているTag(タグ)で指定してオブジェクトを取得する方法です。
大体は同じような感じですね。

注意点として 名前で取得する時と同じように、大文字小文字間違いのないように。
そしてタグの場合、存在しないタグを指定するとエラーになってしまうので気を付けましょう。

タグの設定についてはこちらの記事に





以上!
スポンサーサイト

スポンサーリンク

コメント

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。