【Unity】特定のゲームオブジェクトやコンポーネント、スクリプトにアクセスする

Unityの勉強を再度やり直しています。 ゲームの作成はcocos2dxなどで、どうすればいいのかは大体理解をしていますが、それをUnityでどうすればいいのかがわかりません。 使い慣れていないので仕方がないことなので、まずは色々と触りながら覚えていきたいです。

今回は、スクリプト内で他の「オブジェクト」や「スクリプト」などを呼び出して制御する方法です。

オブジェクトにアクセスする

まずは、Unityには日本語のリファレンスも充実しているので、これを参考にしていきたいです。

GameObject.Find

まずは、オブジェクトの「名前」からアクセスをする方法です。

2014-6-19-fdsasa

[c] private GameObject player;

void Start(){

player = GameObject.Find("Player");

//制御   player.transform.position = pos;

}

[/c] Unity - Unity Manual

GameObject.FindWithTag

次にオブジェクトのタグを利用する方法です。

2014-6-19-fdsasa

[c] private GameObject player;

void Start(){

player = GameObject.FindWithTag("obj1");

//制御   player.transform.position = pos;

}

[/c] Unity - Unity Manual

オブジェクトInspectorで指定する

先ほどまではスクリプト内でオブジェクトを取得していましたが、Inspectorを使ってオブジェクトを指定する方法もあります。 この場合、変数をpublicで作成します。 [c]

public int hitPoint; public int scorePoint;

[/c]

2014-6-19-dasasa

このようにすればUnityの画面上で変数の値を変えることができます。

親オブジェクトを所得する

オブジェクトに階層があり、子オブジェクトから親オブジェクトを呼び出す方法は以下の通りです。

2014-6-19-fdsasa
  • 親:Score GUI
  • 子:Score
  • 子:HighScore

[c] private GameObject _parent;

void Start(){

  //親オブジェクトを取得 _parent = transform.root.gameObject;

}

[/c]

カメラにアクセスする

カメラでは、画面のサイズなどを所得できるので利用頻度は高いと思います。 [c] private GameObject _camera;

void Start(){ //画面のサイズを取得 camera = Camera.main; Vector2 max = camara.ViewportToWorldPoint(new Vector2(1,1));

}

[/c]

コンポーネントにアクセスする - GetComponent

RigidbodyやColliderなど、ゲームを作成する際には色々「コンポーネント」をゲームオブジェクトに追加します。

2014-6-19-kkokod

このコンポーネントを呼び出します。 [c] //BocCollider2Dのsizeを呼び出す Vector2 size = GetComponent().size;

[/c]

GameLayer unity UnityOffcialTutorial2d Android と Assembly CSharp Script DestroyArea cs MonoDevelop Unity

スクリプトにアクセスする

例えば以下の様なスクリプトC#)があるとします。

  • Script1
  • Script2

例:Screip2で「Script1」のメソッドにアクセスする

スクリプトコンポーネントの一種なので、先ほどのGetComponentが利用できます。 [c] //Script1

public float speed; public float objctDelay;

public void Move(Vector2 direction){

    rigidbody2D.velocity = direction * speed;

}

//Script2 private Script1 _script1;

void Start(){

//Script1を取得 _script1 = GetComponent();

}

//メソッドにアクセス _script1.Move(transform.up *-1);

//変数にアクセス bool hoge = _script1.objectDelay;

[/c]

最後に

簡単ですが、スクリプトでコンポーネントを取得する方法を紹介しました。 最初はよくわからない部分が多かったですが、慣れてみると結構使いやすいと思いました。

オブジェクトとコンポーネントは一気に取得することもできます。 [c]

Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1,1));

[/c]

Unityによる2Dゲーム開発入門 ~プログラミング初心者がゲームを公開する最短コースUnityによる2Dゲーム開発入門 ~プログラミング初心者がゲームを公開する最短コース
中島 安彦

技術評論社
売り上げランキング : 29883

Amazonで詳しく見る