Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

インスペクタで、カスタムクラスの中にある変数にアクセスする

わかりにくいタイトルだが、具体的な例で説明する。

下のように、メインであるクラス(下の例では、Physics)のPublic変数にカスタム・クラス(SubData)
を指定しているとする。、

using UnityEngine;
using System.Collections;

public class SubData {
	public int data1;
	public int data2;
	private int data3;
}

public class Physics : MonoBehaviour {
	public SubData data;
	// 途中省略
}

この場合、インスペクターから、SubDataクラスは見えない。つまり、data1, data2も見えない。
f:id:yasuda0404:20130913160031p:plain



インスペクタからSubDataの中にある変数を見えるようにするには、Runtime Attributeの、[System.Serializable]を指定する。

[System.Serializable]
public class SubData {
	public int data1;
	public int data2;
	private int data3;
}

こうすれば、インスペクタから、SubDataのPublic変数が見えるようになる。SubDataクラスのPrivate変数には当然アクセスはできない。

f:id:yasuda0404:20130913160413p:plain