版本:Unity 6(6000.0)
语言英语
  • C#

Handles.DrawOutline

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们无法接受所有提交,但我们会阅读用户提出的每条建议更改,并视情况进行更新。

关闭

提交失败

由于某种原因,我们无法提交您建议的更改。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提升 Unity 文档的质量。

关闭

取消

声明

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);

声明

public static void DrawOutline(int[] parentRenderers, int[] childRenderers, Color parentNodeColor, Color childNodeColor, float fillOpacity);

声明

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);

参数

objects 要描边的高级对象。
parentNodeColor 隐式提供在 objects 参数和 parentRenderers 参数中的高级对象的描边的颜色。alpha 值控制描边的强度。
childNodeColor objects 参数中为 GameObject 子元素的 GameObject 轮廓颜色。Alpha 值控制轮廓的强度。
颜色 objectsrenderers 的轮廓颜色。
parentRenderers 第一组渲染器的实例 ID。如果你将 GameObject 或渲染器作为参数提供,则这些渲染器属于显式在参数中提供的 GameObject。
childRenderers 第二组渲染器的实例 ID。如果你将 GameObject 或渲染器作为参数提供,则这些渲染器属于在参数中提供的对象的子 GameObject。
fillOpacity 每个轮廓中渲染器的透明度。
渲染器 要轮廓化的渲染器。

说明

在场景视图中绘制围绕指定 GameObject 的轮廓。

这仅适用于具有渲染器组件的 GameObject。你只能在 EventType.Repaint 事件期间使用它。

除了传递 GameObject 或渲染器,你还可以使用渲染器 实例 ID。这可以提升性能,因为 Unity 不需要每次调用此函数时都从 GameObject 或渲染器获取实例 ID。

注意:将 GameObject[]、Renderer[] 或 List<GameObject> 作为参数传入的重载形式仅用于提供便利性,使用它们可能会导致需要额外垃圾回收的额外分配。为了避免性能或内存问题,仅在绘制较少数量的轮廓时才使用这些重载形式(如果轮廓数量超过 100,请考虑直接提供渲染器实例 ID)。

parentNodeColorchildNodeColor 的 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); } } }