Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Editor.CreateEditor

Объявление

public static Editor CreateEditor(Object targetObject, Type editorType = null);

public static Editor CreateEditor(Object[] targetObjects, Type editorType = null);

Параметры

objects Все объекты должны быть одного типа.

Описание

Создаёт собственный редактор для targetObject или targetObjects.

По умолчанию создается соответствующий редактор с соответствующим атрибутом CustomEditor. Если указан editorType, вместо этого создается редактор этого типа. Используйте это, если вы создали несколько пользовательских редакторов, и каждый редактор показывает разные свойства объекта. Возвращает NULL, если объекты относятся к разным типам или не найден подходящий редактор. Редакторы, созданные с помощью этой функции, должны быть уничтожены явным образом с помощью Object.Destroy или Object.DestroyImmediate.

Рассмотрите сценарий WaypointPathEditor для редактирования преобразований массива wayPoint.

using UnityEditor; using UnityEngine; using System.Collections; [CustomEditor(typeof(WaypointPath))] public class WaypointPathEditor : Editor { Editor currentTransformEditor; Transform[] waypoints; Transform selectedTransform; string[] optionsList; int index = 0; WaypointPath myWayPath; void GetWaypoints() { myWayPath = target as WaypointPath; if (myWayPath.wayPointArray != null) { optionsList = new string[myWayPath.wayPointArray.Length]; for (int i = 0; i < optionsList.Length; i++) { optionsList[i] = myWayPath.wayPointArray[i].name; } } } public override void OnInspectorGUI() { GetWaypoints (); DrawDefaultInspector (); EditorGUILayout.Space (); EditorGUI.BeginChangeCheck (); if (optionsList != null) index = EditorGUILayout.Popup ("Select Waypoint", index, optionsList); if (EditorGUI.EndChangeCheck()) { Editor tmpEditor = null; if (index < myWayPath.wayPointArray.Length) { selectedTransform = myWayPath.wayPointArray[index]; //Creates an Editor for selected Component from a Popup tmpEditor = Editor.CreateEditor(selectedTransform); } else { selectedTransform = null; } // If there isn't a Transform currently selected then destroy the existing editor if (currentTransformEditor != null) { DestroyImmediate (currentTransformEditor); } currentTransformEditor = tmpEditor; } // Shows the created Editor beneath CustomEditor if (currentTransformEditor != null && selectedTransform != null) { currentTransformEditor.OnInspectorGUI (); } } }

Скрипт, прикрепленный к игровому объекту waypath:

using UnityEngine; using System.Collections; // Примечание: это не скрипт редактора. public class WaypointPath : MonoBehaviour { public Transform[] wayPointArray; }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3