Unity:変数GameObject型とその使い方(アウトレット接続)について

変数GameObject型って何?

UnityにはC#にはないGameObject型なる変数の型があります。まず変数GameObject型ってなんぞ?ですよね。答えはこうです。

変数GameObject型ゲームオブジェクトを入れる為の変数の型

…いやそのままやないかーーい!って感じですね。そうなんです。

ゲームオブジェクトって何?

ゲームオブジェクトというのは、ゲーム内に配置されたもののことを表します。例えば某有名ブラザーズゲームで言うとステージもゲームオブジェクトだし、きのこもカメもゲームオブジェクトだし、地下に置いてある照明に関してもゲームオブジェクトです。

…多分ですがあなたはもうゲームオブジェクトを作成していると思います。置きませんでしたか?Unity側で、画像や四角い物体や丸い物体を。それらがゲームオブジェクトですね。

なぜGameObject型が必要なの?

そもそもなんでGameObject型なんて必要になるの?って疑問持ちませんか?一文字は持ちました。でも少し調べるうちに分かって来ました。

Unity側とC#側には目には見えないうっすい壁があり、Unity側で準備したオブジェクトとC#側で準備したオブジェクト型変数がそれぞれ違う存在になっていること。
そしてそれらを紐づけることによって、C#で指定した色々な操作(ゲームオブジェクトを移動させたり消したり)ができるということが。

なのでUnity側でオブジェクトを準備するだけではなく、その準備したオブジェクトに色々な動作をさせたい場合はC#でもそのオブジェクト(型の変数)を準備してあげる必要があるということなんですね。

UnityのゲームオブジェクトにC#のゲームオブジェクトを紐づける(アウトレット接続)方法

まずC#側でこのようにpublicのGameObject型を作成した段階で

public GameObject 変数名;

そのC#プログラム自体をアタッチされているゲームオブジェクトにこのようなコンポーネントが登場します。

New~はクラス名となっていますので皆さんのデータとは違うと思います。
こちらにはGameObject型変数を用意したクラス名が書かれている筈です。↓


そしてスクリプトと薄い文字で書いてあるその直下にあるRightallow、Leftallow、Backallowというのは、それぞれ私がC#側で作成したGameObject型変数の名前です。なのでここも様々変化する箇所になります。ほとんどの確率であなたが準備している物とは違うことでしょう。↓

一番大事なのは各変数名の真横に書いてあるunityのロゴの欄です。↓

これは既にアウトレット接続済みですが、各GameObject型変数の中に入れたい、unity側で準備したオブジェクトをアウトレット接続して紐づけておく必要があります。

アウトレット接続とは…
C#のクラス内に存在するPublicで宣言している変数が、unity画面内にて作成したC#をアタッチしたオブジェクトのインスペクターを見たときにクラス名と変数名がコンポーネントとして存在し、その変数名の横に表示されている欄に該当のオブジェクトをドラッグ&ドロップすることで紐づけること

やり方としてはアタッチとほぼ同じです。オブジェクトを掴んでその欄にドラッグ&ドロップで放り投げるだけです。

GameObject型変数にあるコンポーネント

GameObject型変数には既にいくつか与えられているコンポーネントがあります。とは言っても難しいことはそれほど無く、unityで円やら四角やら何かしらのオブジェクトを作成した時にインスペクターにずらっと出て来るコンポーネントの面々を想像して貰えれば分かり易いかと思います。

例えばTransform、XYZやサイズなど様々な値を指定できるかと思います。↓

それから、アクティブ、非アクティブの切り替えも可能です。falseにすれば非アクティブでゲーム画面からは消えます。その反対はtrueです。

オブジェクト型変数名.SetActive(false);

コメント

タイトルとURLをコピーしました