バッテラが如く

プログラミングしましょ!

【Unity】インスペクターに表示できるデータ型を調べてみる

Unity (2021.3.2f1)

はじめに

よく使うであろう各データ型がインスペクタで使えるかを検証し表にまとめました。

表の簡単な見方についてですが、

可否×なのは使えなかったということです。

初期値というのはスクリプト側で初期化をせず自動で入るデフォルト値を指します。

基本型

データ型 可否 初期値
int 0
float 0
double 0
byte 0
long 0
char 表示バグが発生する(必ず初期値入れた方がいいと思う)
string 空文字(Nullではない)

配列

データ型 可否 初期値
[ ] 空※解説あり
List
Dictionary ×
Quue ×
Stack ×

空の状態と要素の追加方法

空というのは下図のような状態です。

+を押して要素を追加するとこのように表示されます。

newは不要

スクリプト側の話になるのですが、実はnewする必要がありません。

public int[] ary/* = new int[6]*/; 
public List<int> list/* = new List<int>()*/;

これは結構謎です。内部でnewしてるってことなんですかね🤔

Dictionaryは使えません(まだ)

結構使いたい人多いはずですが現状対応されていないみたいですね。

今後に期待といったところでしょうか。

その他

データ型 可否 初期値
enum 0に対応したフラグ
自作構造体 基本型と同様
自作クラス 基本型と同様
Null許容型 ×

enumの初期値

例えば下記のようなenumを定義した場合 0 に対応したフラグは A なのでAが選択された状態になっています。

public enum TestEnum
{
    A,
    B,
    C,
}

定義順の一番上が初期値ではなく、0に相当したフラグになるので以下の場合はBがデフォルトになります。

public enum TestEnum
{
    A = -1,
    B, // 0   Aがインクリメントされた値になる
    C, //  1
}

Null許容値型は使えない

Null許容値型とは例えば int? といったプリミティブ型だけどnullを代入できるやつです。

まぁ使う必要性がないですが Null許容値型はインスペクターで認識されませんでした。

構造体やクラスはSerializableが必要

例えばこの形式だと表示されません。

public struct TestStruct
{
    public int hoge_1;
    public float hoge_2;
}

~~~~~~~省略~~~~~~~~

public Hoge hoge;

Serializableを属性として追加する必要があります。

[System.Serializable] // ←これいる
public struct TestStruct

クラス(class)も同様です。