PrimitiveBoundsHandle.DrawHandle
Declaration
public void DrawHandle();Описание
Функция для отображения этого экземпляра в текущей камере ручки с использованием ее текущей конфигурации.
Всегда записывайте свойства в handler перед вызовом этой функции. Поместите вызов этой функции внутрь EditorGUI.BeginChangeCheck и EditorGUI.EndChangeCheck для обнаружения взаимодействия пользователя и чтения обновленных свойств из handler.
Следующий компонент определяет объект со свойством Bounds.
using UnityEngine;
public class BoundsExample : MonoBehaviour { public Bounds bounds { get { return m_Bounds; } set { m_Bounds = value; } } [SerializeField] private Bounds m_Bounds = new Bounds(Vector3.zero, Vector3.one); }
Следующий пользовательский редактор позволяет пользователю изменять свойство bounds для этого компонента в представлении Scene.
using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine;
[CustomEditor(typeof(BoundsExample)), CanEditMultipleObjects] public class BoundsExampleEditor : Editor { private BoxBoundsHandle m_BoundsHandle = new BoxBoundsHandle();
// the OnSceneGUI callback uses the Scene view camera for drawing handles by default protected virtual void OnSceneGUI() { BoundsExample boundsExample = (BoundsExample)target;
// copy the target object's data to the handle m_BoundsHandle.center = boundsExample.bounds.center; m_BoundsHandle.size = boundsExample.bounds.size;
// draw the handle EditorGUI.BeginChangeCheck(); m_BoundsHandle.DrawHandle(); if (EditorGUI.EndChangeCheck()) { // record the target object before setting new values so changes can be undone/redone Undo.RecordObject(boundsExample, "Change Bounds");
// copy the handle's updated data back to the target object Bounds newBounds = new Bounds(); newBounds.center = m_BoundsHandle.center; newBounds.size = m_BoundsHandle.size; boundsExample.bounds = newBounds; } } }
Дополнительные ресурсы: ,Editor.OnSceneGUI,, ,Handles.SetCamera,.