Объявление
public static bool PropertyField(SerializedProperty property, params GUILayoutOption[] options);public static bool PropertyField(SerializedProperty property, GUIContent label, params GUILayoutOption[] options);
public static bool PropertyField(SerializedProperty property, bool includeChildren, params GUILayoutOption[] options);
public static bool PropertyField(SerializedProperty property, GUIContent label, bool includeChildren, params GUILayoutOption[] options);
Параметры
property | SerializedProperty, для которого создается поле. |
label | Необязательный ярлык для использования. Если не указано, используется метка самого свойства. Используйте GUIContent.none, чтобы вообще не отображать метку. |
includeChildren | Если true , отрисовывается свойство, включая дочерние элементы; в противном случае только сам элемент управления (например, только раскладку, но ничего под ней). |
options | Необязательный список параметров макета, определяющих дополнительные свойства макета. Любые значения, переданные здесь, переопределяют настройки, определенные style .Смотрите так же: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. |
Возвращает
bool Значение true, если свойство имеет дочерние элементы и развернуто, а для параметра includeChildren установлено значение false; иначе ложно.
Описание
Создаёт поле для SerializedProperty.
Используйте это, если хотите настроить внешний вид параметров игрового объекта в Инспекторе. Используйте это для создания полей для сериализованных свойств. Дополнительные сведения о смене редактора см. в разделе Редактор.
Смотрите так же: 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();
}
}