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)
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.
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.