名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

Unityのちょっとした機能(Inspectorのクラス配列編)

こんにちは、SAT-BOXのコアラです。

今日は偶然見つけたUnityの機能を紹介したいと思います。

その前に、皆さんは作成したクラスの変数をInspectorに表示したことがありますか?

[System.Serializable]をつけることによって、そのクラスの変数をInspectorに表示したり変更することができます。

今回は例として、Animalというクラスを表示してみます

using UnityEngine;

public class Sample : MonoBehaviour {
    public Animal animal;
}

[System.Serializable]
public class Animal {
    public string name;
    [Header("年齢")]
    public int age;
    [Header("身長(cm)")]
    public float height;
    [Header("体重(kg)")]
    public float weight;
}

こうすることで 

 f:id:sat-box:20170410160443p:plain

こうなります。


さて、ここからが本題ですが、こういったものを作るとき、配列にして使うこともあるかと思います。

しかし配列にすると、Inspectorにはこのように表示されると思います。

f:id:sat-box:20170410161347p:plain

ここで問題なのは、各要素の見出しがElementになっていて、どこに何があるのか分からないという点ですね!

非常に分かりづらいです!

しかし!

この見出し、変えることができます!

やり方は簡単です。

Inspectorから各要素を開いて、Nameのところに文字を入れてみましょう。

すると・・・

f:id:sat-box:20170410162228p:plain

なんと、Elementの部分が、Nameに入れた文字に変わりました!

f:id:sat-box:20170410162750p:plain

こうすれば、どこに何があるかも一目で分かりますね。


では、なぜ変わったのかですが・・・

表示している変数の中にstring型の変数があれば、Elementの文字がstring型と同じになる、という仕様になっているようです。

しかし、見出しを変えるには条件があります。

それは…string型がクラスの変数の中で一番上に表示されていること です。

試しに、int型のAgeを一番上にしたところ、Elementに戻ってしまいました。

f:id:sat-box:20170410171157p:plain

string型が一番上にないと変えれないようですね。


これで以上です。

この機能、あまり使う機会はないかもしれませんが、知っていて損はないと思います!