A Day In The Life

とあるプログラマの備忘録

UnityのuGUI関連のクラスを図にしてみた

Unity で開発をはじめた頃、一番わけがわからなかったのがゲームを構成するオブジェクト同士の関係でした。ゲームオブジェクト?コンポーネント?トランスフォーム?なんじゃこれってなりました。Cocos2d-x や SpriteKit のように単純なノードツリーで構成されてないことにかなり戸惑いました。Unity を本格的に使い始めて3ヶ月ほど経ちそこそこ Unity 特有の世界観に慣れてきたのでこの辺りでクラスの関係をクラス図にまとめてみました。自分は2Dゲーム開発と uGUI を使った UI 開発で使うことがほとんどなのでその辺で使うクラスに絞って図にしてあります。

クラス図

f:id:glass-_-onion:20160614095059p:plain

補足

  • UnityEngine ネームスペース(namespace)は省略しています
  • ネームスペースごとに色をわけています
  • GameObject、Component クラスには代表的なメソッドとして GetComponent メソッドを挙げています。GetComponentInChildren や GetComponentsInChildren メソッドなんかはわざと省略しています

個人的な感想

  • GameObject と Component クラスが似ててややこしいがここをちゃんと理解すれば混乱の大部分はなくなる
  • Canvas クラスは UI と関係ないところにいたのが意外だった
  • オブジェクトの親子関係を管理しているのは Transform クラス、なんで GameObject じゃないのか疑問
  • UI 系クラスの親が MonoBehaviour だった
  • UI 系クラスは Selectable(ユーザ入力) と Graphic(表示)クラスに大別できる
  • イベント系クラスは別のネームスペース(EventSystems)で管理されている
    • UIBehaviour クラスのネームスペースが EventSystems だった(UI じゃないんだ的な)

参考

おすすめUnity本