It's because the only things that show up in the inspector are serializable fields or things that you implement in OnInspectorGUI
as a custom editor for that class.
For reference: http://unity3d.com/support/documentation/ScriptReference/SerializeField
Serializable types are:
- All classed inheriting from UnityEngine.Object, for example Gameobject, Commponent, MonoBehaviour, Texture2D, AnimationClip..
- All basic data types like int, string, float, bool.
- Some built in types like Vector2, Vector3, Vector4, Quaternion, Matrix4x4, Color, Rect, Layermask...
- Arrays of a serializable type
- List of a serializable type (new in Unity2.6)
- Enums
Headsup note: if you put one element in a list (or array) twice, when the list gets serialized, you'll get two copies of that element, instead of one copy being in the new list twice.
Now Plane
is just a struct that has a Vector3
and a float
, so you could use those two serializable types to construct a Plane
object at runtime if you really need to.
But my guess is that you really want to leave the serialized field as GameObject
so you can point to the plane in the scene.