Объявление
public void OnDrawHandles();Описание
Реализуйте этот метод для рисования неинтерактивных маркеров, когда доступен пользовательский инструмент редактирования.
Этот метод вызывается, когда для текущего выделения доступен пользовательский инструмент редактирования. Используйте этот метод для рисования информации в SceneView. Пользовательский инструмент редактора — это EditorTool с типом цели, заданным EditorToolAttribute.р>
using System;
using UnityEngine;
using UnityEditor;
using UnityEditor.EditorTools;
[EditorTool("LightTool", 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 LightTool 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;
}
}
}