Handles.DrawOutline
Declaration
public static void DrawOutline(GameObject[] objects, Color parentNodeColor, Color childNodeColor, float fillOpacity);public static void DrawOutline(GameObject[] objects, Color color, float fillOpacity);public static void DrawOutline(List<GameObject> objects, Color parentNodeColor, Color childNodeColor, float fillOpacity);public static void DrawOutline(List<GameObject> objects, Color color, float fillOpacity);Obsolete public static void DrawOutline(int[] parentRenderers, int[] childRenderers, Color parentNodeColor, Color childNodeColor, float fillOpacity);Obsolete public static void DrawOutline(int[] renderers, Color color, float fillOpacity);public static void DrawOutline(Renderer[] renderers, Color parentNodeColor, Color childNodeColor, float fillOpacity);public static void DrawOutline(Renderer[] renderers, Color color, float fillOpacity);Параметры
| Параметр | Описание |
|---|---|
| объекты | GameObjects для очертаний. |
| parentNodeColor | Цвет контура GameObjects, явно указанный в параметрах objects и parentRenderers. Значение alpha управляет интенсивностью контура. |
| childNodeColor | Цвет контуров GameObjects, которые являются дочерними к GameObjects в параметре objects. Значение alpha контролирует интенсивность контуров. |
| цвет | Цвет контуров для objects и renderers. |
| parentRenderers | Экземпляр IDs первого набора Рендереров. Если вы указываете GameObjects или Рендереры в качестве параметров, эти Рендереры принадлежат GameObjects, явно указанному в параметрах. |
| childRenderers | Экземпляр IDs второго набора Рендереров. Если вы указываете GameObjects или Рендереры в качестве параметров, эти Рендереры принадлежат дочернему GameObjects объектов, указанных в параметрах. |
| fillOpacity | Непрозрачность рендеров внутри каждого контура. |
| рендереры | Рендереры, чтобы очертить. |
Описание
Рисует контур вокруг указанного GameObjects в представлении Scene.
Это относится только к GameObjects Вы можете использовать это только во время игры. EventType.Repaint событие.
Вместо передачи GameObjects или Renderers, вы можете также использовать Renderer экземпляр IDs. Это улучшает производительность, потому что Unity не нужно получать экземпляр IDs от GameObjects или Renderers каждый раз, когда вы вызываете эту функцию.
NOTE: Перегрузки, которые отнимают GameObject[], Renderer[] или List<GameObject> чтобы избежать проблем с производительностью или памятью, используйте эти перегрузки только при рисовании относительно небольшого количества контуров (подумайте о предоставлении экземпляра рендерера, который будет выполнять эту работу) IDs непосредственно, если число контуров превышает 100).
Значения альфа parentNodeColor и childNodeColor контролировать интенсивность контура, 0 делает его полностью прозрачным, а 1 делает полностью непрозрачным.fillOpacity контролирует вес мультипликатора цвета для рендеринга. Выше fillOpacity значения делают цвет более интенсивным и оставляют первоначальный объект менее заметным.
Дополнительные ресурсы Handles.DrawCamera.
using UnityEditor; using UnityEngine;
namespace UnityEditor { [CustomEditor(typeof(GameObject))] public class CustomInspector : Editor { private GameObject[] objects;
public void OnEnable() { // Note: If you use FindGameObjectsWithTag in a Prefab Stage that you opened from a Scene, // it includes GameObjects from that Scene. Instead use: // var renderers = StageUtility.GetCurrentStage().FindComponentsOfType<Renderer>(); // to explicitly specify where to get the GameObjects from. objects = GameObject.FindGameObjectsWithTag("Player"); // populate the objects array with game objects }
public void OnSceneGUI() { // draw the outline with an alpha of 0.5 if (Event.current.type == EventType.Repaint) Handles.DrawOutline(objects, Color.yellow, Color.green, 0.1f); } } }