publicを利用してGameObjectをコンポーネント上で操作できるようにする
はじめに
前回の続きみたいなものです.
前回はpublic指定した値をコンポーネント上で操作する機能について説明しました.
今回は数値ではなくヒエラルキー上にあるオブジェクトも操作できることについて説明します.
publicでGameObjectの変数を宣言
まず,適当に空のオブジェクト(Create Empty)を用意して,New Scriptをコンポーネント上で作成します.今回はそれをGameobject_rotationという名前にしておきます.
この時点では何もありません.スクリプトを下記のように編集します.
今回も回転させるだけのスクリプトですが,違いはpublic指定している変数rotation_tの方がGameObject型であるということです.
rotation_tのTransformというコンポーネントをGetして,Transformの中のRotateを(3,2,1)にしてね,という意味のスクリプトをUpdate()に記述します.
こうすると,コンポーネント上ではどうなっているかといいますと
前回数値が入力できたかのように,Gameobjectを入力できます.変数名はRotation_tですね.
GameObjectの入力の方法は,2種類
①ヒエラルキー上のオブジェクトをドラッグ・アンド・ドロップ
②右側の◎みたいなマークをクリックしてオブジェクトを選択
今回は②のパターンでやってみます.[None(Game Object)]の右側にある◎みたいなものをクリックすると
ヒエラルキー上にあるオブジェクトが一覧で表示されます.Assetで色々ダウンロードしていたらもっとたくさん出てきます.今回は予め生成しておいたCylinderを選択します.Cylinder…つまりは円柱ですね.
選択できました.これで,スクリプト上ではRotation_tはコンポーネント上にあるCylinderになります.
実際の挙動
この状態で実行しますと
やったぜ動いたぜ.
このようにしてヒエラルキー上にあるオブジェクトを視覚的に指定して,スクリプトに載せることができます.直感的にやりやすい…
まとめ
publicでGameObjectを指定することでヒエラルキー上のオブジェクトを操作することができる.
工夫次第では,同じスクリプトで同じ挙動をさせたいけどオブジェクトが異なるものを,同じスクリプトで賄うことができます.しかも視覚的に確認できる.良いですね.