前回の記事では、Scene上のGameObjectを取得できましたが、今回はその取得できたGameObjectにアタッチされているスクリプト等にアクセスする方法について書いていきます。
コンポーネントを取得する
表題ではスクリプトにアクセスすると書きましたが、Unityでのスクリプトとはつまり、オブジェクトの持っているコンポーネントのうちの一つです。つまり、スクリプトにアクセスするだけでなく、他の機能であるRigidbodyやTextureなどにアクセスことも、同じ方法でできます。
実際にアクセスするには、取得したGameObjectに対し、GetComponent<T>()を行うことで取得できます。型パラメータには取得したいコンポーネントを指定します。例えば、Rigidbodyにアクセスする場合や、自作したSampleScriptというアタッチされているスクリプトにアクセスするためには、以下のように記述します。
1 2 3 |
gameObject.GetComponent<Rigidbody> (); gameObject.GetComponent<SampleScript> (); |
この記述では自分自身にアタッチされている他のコンポーネントにアクセスする場合です。自分自身ではなくScene上の他のGameObjectに対して処理を行いたい場合は、前回の記事で取得したGameObjectに対して行うことでアクセスできます。
コンポーネントの値を変更する
コンポーネントが取得できてしまえばあとは普通の変数と同じように扱うことが出来ます。例えば、Scene上に存在するcubeというGameObjectを取得し、そのcubeにアタッチされているRigidbodyにアクセスして、useGravityプロパティを切り替えるといった内容は以下のようになります。
1 |
GameObject.Find ("cube").GetComponent<Rigidbody> ().useGravity = true; |
文章で書くと長いですが、プログラムではこれだけで処理が行えます。ただし、これだけの処理はまとめてかけますが、cubeがScene上に存在していない場合や、Rigidbodyコンポーネントがcubeにアタッチされていない場合等、様々な場合によってエラーが起きるので注意する必要があります。
終わりに
今回は短いですが、コンポーネントの取得と変更について書きました。Unityではこのようにして変数にアクセスするのが基本となっているので、一つの記事にしました。
次回からは取得したGameObjectやコンポーネントを使って、製作中によく行う「こんな動作をさせたい」といった内容にフォーカスして書いていきます。ちなみに次回はオブジェクトの表示非表示についてです。
では、また。