Unityメモ #2 ゲームオブジェクトの概念

前回ちらっとだけゲームオブジェクトという単語が出てきていたが、今回はその説明。

今回もまだ実際のコードなどはなし。
概念のみだけどここはわかってしまえば簡単だけれども公式ドキュメントとにらめっこしてもなかなかはいってこない、独学だとスゲー時間がかかったりする部分。超大事。

一応このメモのターゲットを明記しておくけど、Unityをはじめてプログラムなどで組むための人向けではなくて、すでにほかの環境でプログラムを触ったことがある人向け。俺と同じ状況だった人へ。

概要

ゲームオブジェクトとはシーングラフ上の各ノードを表す。

これはある意味cocos2dのNodeやlibGDXのScene2DのActorやGroupに近いもの。

シーングラフとは親があり、子が複数あり、ツリー上で構成されるもの。
普通のGUIアプリなら必ずこの構成だと思ってよい。
子は親の座標からの相対的な座標などを保持する。


公式のドキュメントの説明は以下なのだがこれ読むと余計わからないので気にしなくてよいと思う。
というか、わからせようとしてないと思う。すごく大事なところなのに。
https://docs.unity3d.com/ja/2018.2/Manual/class-GameObject.html

過去のドキュメントだとこの辺少しまともだったと思うけど、現時点ではなにいってるかわからないので無視するべし。

ゲームオブジェクトは親子関係の情報を持っていて、ふるまいはこいつ自身は持たないもの、という理解でよい。
ふるまいは前回書いたコンポーネントのこと。

それ自体は機能をほとんど持たないゲームオブジェクトだが、こいつはコンポーネントを複数保持することができる。
ゲームオブジェクトとコンポーネントは組み合わせてやっと意味が出るということ。

コンポーネントは複数持つことができるというのがポイントでプログラムもコンポーネントとして貼り付けることができる。それによって独自のふるまいを注入することができる。

このコンポーネントがゲームオブジェクトに付与されることを公式には「アタッチする」と呼んでいるのでこれも覚えておきたい。

Transformは最重要項目

親子関係や座標などはより正確にいうとゲームオブジェクトそれ自身ではなくTransformというコンポーネントが持っている。

ただしこれはゲームオブジェクトを作ると必ず含まれている上にpublic変数でアクセスができるので、あまりコンポーネントとしては意識する必要はないかもしれないのでゲームオブジェクトが持っているものと考えてよいと思う。

つまりゲームオブジェクトというものがでてきたら自然とTransformも含むのだなと。

ほかにもいろいろとあることはあるが、現時点でこれだけ覚えておけばよい。
いろいろと知りたいなら以下参照。

https://docs.unity3d.com/ja/2018.2/ScriptReference/GameObject.html


次回からプログラム的なことがやっと始まる…気がする。