EditorToolAttribute
класс в UnityEditor.EditorTools
Наследуется от:EditorTools.ToolAttribute
Описание
Зарегистрирует EditorTool в качестве глобального инструмента или инструмента Component для определенного типа цели.
Глобальный инструмент работает на любом выборе. Глобальный инструмент также всегда доступен с верхней панели инструментов. Инструмент Компонент, например CustomEditor, доступен только для выборов, соответствующих типу объекта.
using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; public static class Drawing { public static void DrawPoints(Transform transform, IList<Vector3> positions, Color color, float size) { if (positions == null || !positions.Any()) return; var matrix = transform.localToWorldMatrix; DrawHandleCaps(matrix, positions, color * .3f, size, CompareFunction.Greater); DrawHandleCaps(matrix, positions, color, size, CompareFunction.LessEqual); } public static void DrawHandleCaps(Matrix4x4 transform, IList<Vector3> positions, Color color, float size, CompareFunction compare) { if (Event.current.type != EventType.Repaint) return; var camera = Camera.current; Vector3 sideways = (camera == null ? Vector3.right : camera.transform.right); Vector3 up = (camera == null ? Vector3.up : camera.transform.up); var prevColor = Handles.color; Handles.color = color; var prevCompare = Handles.zTest; Handles.zTest = compare; var world = transform.MultiplyPoint3x4(positions[0]); // DotHandleCap call sets up the material and GL state, so just re-use it to avoid expensive setup for each quad // Done this way because HandleUtility.ApplyWireMaterial is private Handles.DotHandleCap(0, world, Quaternion.identity, HandleUtility.GetHandleSize(world) * size, EventType.Repaint); GL.Begin(GL.QUADS); foreach (var p in positions) { var position = transform.MultiplyPoint(p); var handleSize = HandleUtility.GetHandleSize(position) * size; GL.Color(color); GL.Vertex(position + (sideways + up) * handleSize); GL.Vertex(position + (sideways - up) * handleSize); GL.Vertex(position - (sideways + up) * handleSize); GL.Vertex(position - (sideways - up) * handleSize); } GL.End(); Handles.color = prevColor; Handles.zTest = prevCompare; } }
Вы также можете использовать варианты инструментов, чтобы сгруппировать похожие инструменты в одну кнопку в накладке Инструменты. См. ToolAttribute.variantGroup.
using System; using UnityEditor; using UnityEditor.EditorTools; using UnityEngine; namespace GlobalToolVariants { // Define 3 tools that should be shown as a single button in the Tools Overlay. struct ShapeVariantGroup {} [EditorTool("Line (Custom Global)", variantGroup = typeof(ShapeVariantGroup), variantPriority = 2)] [Icon("Assets/Examples/Icons/Variant-Line.png")] class Line : EditorTool {} [EditorTool("Circle (Custom Global)", variantGroup = typeof(ShapeVariantGroup), variantPriority = 1)] [Icon("Assets/Examples/Icons/Variant-Circle.png")] class Circle : EditorTool {} [EditorTool("Square (Custom Global)", variantGroup = typeof(ShapeVariantGroup), variantPriority = 0)] [Icon("Assets/Examples/Icons/Variant-Square.png")] class Square : EditorTool {} }
Конструкторы
| Конструктор | Описание |
|---|---|
| EditorToolAttribute | Зарегистрирует EditorTool как глобальный инструмент или инструмент CustomEditor. |
Унаследованные члены 2
Статические свойства
| Свойство | Описание |
|---|---|
| defaultPriority | Значение по умолчанию для ToolAttribute.toolPriority и ToolAttribute.variantPriority. Укажите приоритет ниже этого значения, чтобы отобразить инструмент перед записями по умолчанию, или укажите более высокое значение, чтобы отобразить его после записей по умолчанию. |
Свойства
| Свойство | Описание |
|---|---|
| allowPersistentTargets | Позволяет инструменту нацеливаться на постоянные объекты. Это совместимо только с ScriptableObjects. При разработке инструментов, нацеленных на постоянные объекты, информируйте пользователей о том, редактируют ли они в сцене или постоянный объект. |
| displayName | Имя, которое отображается в меню. |
| group | Группы инструментов помещают логически схожие инструменты под одним заголовком в Накладке инструментов. |
| targetContext | Если указано, то EditorTool будет доступен только тогда, когда ToolManager.activeContextType равен targetContext. |
| targetType | Устанавливает тип инструмента, который может быть изменён этим EditorTool или EditorToolContext. Устанавливает null, если инструмент не специфичен для Компонента и должен быть доступен в любое время. |
| toolPriority | Приоритет инструмента определяет порядок, в котором инструменты отображаются в перекрытии инструментов. |
| variantGroup | Варианты инструментов используются для группировки логически схожих инструментов в одну кнопку в накладке Инструменты. |
| variantPriority | Вариант приоритета определяет порядок, в котором инструменты отображаются, когда они отображаются в раскрывающемся списке ToolAttribute.variantGroup. |