どうもチャーさんです。
あなたはunityで他のオブジェクトを
取得したいがわからず困ってますか?
この記事では、unityで他のオブジェクトを
取得する方法を書いてます。
なので読めば、あなたは他のオブジェクトを
自由に取得できるようになります。
ので、unityで他のオブジェクトを取得したいなら、
このまま下にスクロールして読んでください。
unityで他のオブジェクトを取得するには
unityで他のオブジェクトを取得するには、
以下の2通りのやり方があります。
1つ目の方法はpublic GameObject 変数名;
で宣言したのちに、インスペクタ上で
取得したいオブジェクトをドラッグ&ドロップです。
2つ目は同じく変数宣言ののちに、
変数名 = GameObject.Find(“ここに取得したいオブジェクト名”);
で取得可能です。
なぜこの方法なのかという補足を少しすると、
unityではインスペクタ上でオブジェクトを
取得できる仕組みがありまして、
それを使えば他のオブジェクトを取得できます。
またそれとは別に、オブジェクトを取得する関数も
用意されており、それがGameObject.Find()という関数です。
これを使えば他のオブジェクトを取得できるので、
どちらかのやり方を使いましょう。
具体的なやり方の説明はここから
でここからは、具体的に上記のやり方を
画像などを持って説明していきます。
インスペクタ上で取得の場合
まず1つ目のやり方ですが、
まずはオブジェクトにスクリプトを
つけたのちに、スクリプト内に以下のように書きます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class textTest : MonoBehaviour {
//↓これでgameobject型の変数宣言
public GameObject obj;
}
スクリプトを書くと言っても変数宣言するだけでいいので、
あんまりスクリプト詳しくない場合はこっちが楽です。
注1)オブジェクトを取得する際は、
変数型を合わせる必要があるので、
変数名(obj)の前に書く変数型にGameObjectと書くこと。
でこのようにスクリプトに書いてやると、
スクリプトをつけたオブジェクトの、
スクリプトコンポーネントの所に、
以下の画像のように、スクリプトに書いた
変数名(obj)と、その横にフィールド(Noneて書いてるとこ)
が用意されます。
で、あとは、この新しくできたフィールド内に、
ヒエラルキー上にあるゲームオブジェクト
(取得したいオブジェクト)をドラッグして、
インスペクター上のこのNoneて書いてる
フィールド上にドロップすればOKです。
すると他のオブジェクトを取得したことに
なります。
unityはこの辺楽でして、
インスペクター上で他のオブジェクトを
取得できるようになってます。
GameObject.Find()関数を使う場合
で2つ目の方法ですが、
こちらは変数宣言した後に、
GameObject.Find()関数というのを使うやり方です。
コードは以下のように書けばokです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class textTest : MonoBehaviour {
//↓これでgameobject型の変数宣言
public GameObject obj;
void Start () {
obj = GameObject.Find (“Knight Warrior“);
//↑この関数でオブジェクトを取得できる
()内に取得したいゲームオブジェクトの名前を入力
}
です。
注(Knight Warriorは例ですので、
あなたのが実際やる場合はヒエラルキー上にある、
ゲームオブジェクトで取得したいオブジェクトの名前を
コピーしてGameObject.Findの(“”)内のとこにコピペしましょう。)
でこれをスクリプト内に書いておけば、
あなたが取得したい他のオブジェクトを
取得することが可能です。
ちなみにGameObject.Find()関数を使うなら、
上記のように変数に代入しておくことをお勧めします。
というのも他のオブジェクトを取得したら、
そのあと色々コンポーネントを取得したり
値をスクリプトで変えていくことになるので、
コードが変に長くなりません。
上記説明ではよくわからない場合もあるかもですが、
とりあえず変数に格納しておきましょう。
で話戻りますが、他のオブジェクトを取得する際、
やり方が2つありますが、
結果的には同じなので、あなた的にやりやすい方で
やると良いでしょう。
まとめ
ということでまとめに入ります。
unityで他のオブジェクトを取得するには、
1、public GameObject 変数名;
で宣言したのちに、インスペクタ上で
取得したいオブジェクトをドラッグ&ドロップ。
2、変数宣言ののちに、
変数名 = GameObject.Find(“ここに取得したいオブジェクト名”);
で取得。
のどちらかを使えば可能です。
ということで、早速本記事の内容を実践し、
unityで他のオブジェクトを取得してみましょう。
取得したあとは取得したオブジェクトの
コンポーネントをスクリプトでいじれるので、
ゲームっぽくしたりもできますよ。
ということで読んでもらってありがとうございました。
チャーさん