FC2ブログ

記事一覧

スポンサーサイト

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

スポンサーリンク

Unity コンポーネントの取得

メモ

オブジェクト取得と近い内容です

別のオブジェクトにアタッチされたコンポーネントを取得してアレコレしたい時のメモです。
コンポーネントというのはオブジェクトにくっついている Transform とか, Rigidbody とかのことです。
自分で書いたスクリプトも、オブジェクトにアタッチすればコンポーネントとして扱われます。


では早速


まずは目当てのコンポーネントがアタッチされているオブジェクトを取得します。
こちらの記事で紹介しています。


オブジェクトを取得できたら次です。
例として

オブジェクト名: obj
取得するコンポーネント: Rigidbody2D


を想定してやってみます。

Rigidbody2D rb;
//Rigidbody2D クラス型のコンポーネントを取得するので、それを格納する変数を宣言


これもまた一度きりの利用なら必要ありませんが、一応。
クラス型はすこし理解しづらいですね。
例えば 自分で用意したスクリプト「Test」を取得して格納する変数を宣言する場合には

Test tst; //変数名(この場合tst)はなんでも

こうです。
スクリプト名 = クラス名 = クラス型 
こんな感じでしょうか。自分も理解が甘いデス。

変数が用意できたら取得して格納!

rb = obj.GetComponent<Rigidbody2D>();
//objに対してRigidbody2DをGetComponent


objの部分は取得したいコンポーネントがアタッチされているオブジェクトを指定
<>の中には取得したいコンポーネントの型を指定


これでコンポーネントが取得できます。
オブジェクトobjにアタッチされたスクリプトTestを取得したいとしたら

tst = obj.GetComponent<Test>(); //変数tstはTest型で宣言

となります。

・コンポーネントが取得できたら・・・

オブジェクトA(Testスクリプトがアタッチされている)
オブジェクトB(AのTest スクリプトコンポーネントを取得した)
の2つがあると考えてください。

public int a = 0;

例えばTestスクリプトの中身がこうだったとします。
この変数aの値をオブジェクトBから書き換えるには

//以下オブジェクトBのスクリプト
//変数tstはTestを格納しているもの

tst.a = 1;

これだけです。
Testスクリプトの関数を呼び出す場合にも同じです。

tst.TestFunc(); //Testスクリプトに TestFunc() 関数があるとして

こんな感じです。

注意する点として
アクセスされる側(この例の場合Test)で変数、関数を記述する時に
public をつけておかなければいけません。
上の例でも public int...... となっていますね。

※この辺については、また今度詳しく書こうと思います。


以上!


スポンサーサイト

スポンサーリンク

コメント

コメントの投稿

非公開コメント

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