Unity 6.3
0 онлайн 40 гостей 3 в системе
Вход

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,.