objects | 要描边的高级对象。 |
parentNodeColor | 隐式提供在 objects 参数和 parentRenderers 参数中的高级对象的描边的颜色。alpha 值控制描边的强度。 |
childNodeColor | objects 参数中为 GameObject 子元素的 GameObject 轮廓颜色。Alpha 值控制轮廓的强度。 |
颜色 | objects 和 renderers 的轮廓颜色。 |
parentRenderers | 第一组渲染器的实例 ID。如果你将 GameObject 或渲染器作为参数提供,则这些渲染器属于显式在参数中提供的 GameObject。 |
childRenderers | 第二组渲染器的实例 ID。如果你将 GameObject 或渲染器作为参数提供,则这些渲染器属于在参数中提供的对象的子 GameObject。 |
fillOpacity | 每个轮廓中渲染器的透明度。 |
渲染器 | 要轮廓化的渲染器。 |
在场景视图中绘制围绕指定 GameObject 的轮廓。
这仅适用于具有渲染器组件的 GameObject。你只能在 EventType.Repaint 事件期间使用它。
除了传递 GameObject 或渲染器,你还可以使用渲染器 实例 ID。这可以提升性能,因为 Unity 不需要每次调用此函数时都从 GameObject 或渲染器获取实例 ID。
注意:将 GameObject[]、Renderer[] 或 List<GameObject> 作为参数传入的重载形式仅用于提供便利性,使用它们可能会导致需要额外垃圾回收的额外分配。为了避免性能或内存问题,仅在绘制较少数量的轮廓时才使用这些重载形式(如果轮廓数量超过 100,请考虑直接提供渲染器实例 ID)。
parentNodeColor 和 childNodeColor 的 alpha 值控制轮廓的强度,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); } } }