IDrawSelectedHandles
интерфейс в UnityEditor.EditorTools
Описание
Предоставляет неинтерактивные ручки в пользовательском EditorTool, когда инструмент доступен.
С помощью этого интерфейса можно рисовать манипуляторы на цели выделения ещё до того, как вы выбрали свой инструмент (когда он неактивен). В примере кода пользовательский инструмент для света наследует IDrawSelectedHandles и реализует OnDrawHandles, чтобы рисовать манипуляторы у источников света даже при неактивном инструменте.
Дополнительные ресурсы: IDrawSelectedHandles.OnDrawHandles, EditorTool, EditorToolContext.
using System; using UnityEngine; using UnityEditor; using UnityEditor.EditorTools;
[EditorTool("Light Tool", typeof(Light))] public class CustomEditorLightTool : EditorTool, IDrawSelectedHandles { // OnToolGUI is called when the tool is active. Interactive handles belong here. public override void OnToolGUI(EditorWindow window) { var position = Tools.handlePosition;
EditorGUI.BeginChangeCheck();
var result = Handles.PositionHandle(position, Quaternion.identity);
if (EditorGUI.EndChangeCheck()) { var delta = result - position;
Undo.RecordObjects(Selection.transforms, "Move Lights");
foreach (var light in targets) ((Light)light).transform.position += delta; } }
// OnDrawHandles is called when a custom editor tool is available for the current selection. Use this to draw // information in the SceneView when any object matching the target type is selected. public void OnDrawHandles() { foreach (var light in targets) { // If the Light Tool is active, draw a green radius handle. If it is not active, make the radius blue. Handles.color = EditorTools.IsActiveTool(this) ? Color.green : Color.blue; Handles.RadiusHandle(Quaternion.identity, ((Light)light).transform.position, 2f); Handles.color = Color.white; } } }
Открытые методы
| Метод | Описание |
|---|---|
| OnDrawHandles | Реализуйте этот метод для рисования неинтерактивных ручек, когда доступен пользовательский редактор. |