property | The SerializedProperty to make a field for. |
label | Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. |
includeChildren | If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). |
options | An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style .See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. |
bool True if the property has children and is expanded and includeChildren was set to false; otherwise false.
Make a field for SerializedProperty.
Use this when you want to customise the look of the options for a GameObject in the Inspector. Use this to create fields for Serialized Properties. More information on changing the Editor is available in the Editor section.
See Also: SerializedProperty, SerializedObject.
//The scripts below show how to use a propertyField to change your editor. //Attach this first script to the GameObject that you would like to control. Add code in this script for any of the actions you require.
using UnityEngine;
public class MyGameObjectScript : MonoBehaviour { public int m_MyInt = 75; public Vector3 m_MyVector = new Vector3(20, 1, 0); public GameObject m_MyGameObject; }
//This next script shows how to call upon variables from the "MyGameObject" Script (the first script) to make custom fields in the Inspector for these variables.
using UnityEngine; using UnityEditor;
// Custom Editor using SerializedProperties. // Automatic handling of multi-object editing, undo, and prefab overrides. [CustomEditor(typeof(MyGameObjectScript))] [CanEditMultipleObjects] public class EditorGUILayoutPropertyField : Editor { SerializedProperty m_IntProp; SerializedProperty m_VectorProp; SerializedProperty m_GameObjectProp;
void OnEnable() { // Fetch the objects from the GameObject script to display in the inspector m_IntProp = serializedObject.FindProperty("m_MyInt"); m_VectorProp = serializedObject.FindProperty("m_MyVector"); m_GameObjectProp = serializedObject.FindProperty("m_MyGameObject"); }
public override void OnInspectorGUI() { //The variables and GameObject from the MyGameObject script are displayed in the Inspector with appropriate labels EditorGUILayout.PropertyField(m_IntProp, new GUIContent("Int Field"), GUILayout.Height(20)); EditorGUILayout.PropertyField(m_VectorProp, new GUIContent("Vector Object")); EditorGUILayout.PropertyField(m_GameObjectProp, new GUIContent("Game Object"));
// Apply changes to the serializedProperty - always do this at the end of OnInspectorGUI. serializedObject.ApplyModifiedProperties(); } }