Unityの備忘録

これまでUnity(とC#)を避けていたが、機会があって触り始めたので、いくつか詰まったところを備忘録として残す。

GameObjectとスクリプト

GameObjectにアタッチされたスクリプトコンポーネントとして取り扱われる。そのためスクリプトで定義したクラスのインスタンスは、GameObjectのメンバではないことに注意する。スクリプトのクラスのメンバにアクセスしたい時は GameObject.GetComponent<ClassName>().hoge(); でアクセスする。

enumの共有

問題

enumで定義したステータスなどを複数のオブジェクトで使いたい時、定義をスクリプトの中に書くと、クラスの外へ出したとしてもグローバルにはならず(GameObjectの要素になってしまうため?)、他スクリプトからアクセスできない。

解決策

一旦MonoBehaviourを継承したenumを定義するClassを作り、これを継承する。インターフェースでできるならそちらのが楽だと思う(できるんだろうか)。

リファレンス

Unityのリファレンスとにらめっこするのもいいが、基本的な内容ならマニュアルを読んだほうが早い。(正直言って、リファレンスだけではGameObjectとスクリプトの関係を理解するのは難しかった。)