Объявление
public static bool PropertyField(Rect position, SerializedProperty property, bool includeChildren = false);public static bool PropertyField(Rect position, SerializedProperty property, GUIContent label, bool includeChildren = false);
Параметры
position | Прямоугольник на экране для использования в качестве поля свойства. |
property | SerializedProperty, для которого создается поле. |
label | Необязательный ярлык для использования. Если не указано, используется метка самого свойства. Используйте GUIContent.none, чтобы вообще не отображать метку. |
includeChildren | Если true , отрисовывается свойство, включая дочерние элементы; в противном случае только сам элемент управления (например, только раскладку, но ничего под ней). |
Возвращает
bool Значение true, если свойство имеет дочерние элементы и развернуто, а для параметра includeChildren установлено значение false; иначе ложно.
Описание
Используйте это, чтобы создать поле для SerializedProperty в редакторе.
Смотрите так же: SerializedProperty, SerializedObject.
//Прикрепите подобный скрипт к GameObject, для которого вы хотите иметь собственное окно Editor.
using UnityEngine;
public class MyScript : MonoBehaviour
{
public int myInt = 90;
}
// Создайте папку и назовите ее «Editor» и поместите в нее этот второй скрипт. Для этого щелкните правой кнопкой мыши в каталоге «Активы» и выберите «Создать>Папку».
//Убедитесь, что вы вставили имя своего первого скрипта в качестве параметра в CustomEditor, например. [Пользовательский редактор(typeof(MyScript))]
using UnityEngine;
using UnityEditor;
// Custom Editor using SerializedProperties.
// Make sure to put the name of the script on your GameObject in here
[CustomEditor(typeof(MyScript))]
// Automatic handling of multi-object editing, undo, and Prefab overrides.
[CanEditMultipleObjects]
public class EditorGUIPropertyField : Editor
{
SerializedProperty m_IntProperty;
void OnEnable()
{
// Fetch the objects from the MyScript script to display in the inspector
m_IntProperty = serializedObject.FindProperty("myInt");
}
public override void OnInspectorGUI()
{
//The variables and GameObject from the GameObject script are displayed in the Inspector and have the appropriate label
EditorGUI.PropertyField(new Rect(0, 300, 500, 30), m_IntProperty, new GUIContent("Int : "));
// Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI.
serializedObject.ApplyModifiedProperties();
}
}