乐趣区

关于程序员:Unity3D-重要的类-Gizmos-和-Handles

举荐:将 NSDT 场景编辑器退出你的 3D 工具链 3D 工具集:NSDT 简石数字孪生重要的类 – Gizmos 和 HandlesGizmos 和 Handles 类用于在 Scene 视图和 Game 视图绘制线条和形态以及交互式手柄和控件。这两个类独特提供了一种办法来扩大这些视图中显示的内容,并构建交互式工具以您喜爱的任何形式编辑我的项目。例如,您能够在游戏中围绕非玩家角色创立一个可拖动的圆圈辅助图标,代表它可听到或看到玩家的区域,而不用在 Inspector 中输出数字。本页面提供了 Gizmos 和 Handles 类的简略概述。无关 Gizmos 和 Handles 类每个成员的残缺文档和详尽参考,请参阅 Gizmos 和 Handles 脚本参考页面。GizmosGizmos 类容许您将线条、球体、立方体、图标、纹理和网格绘制到 Scene 视图中,在开发我的项目时用作调试、设置的辅助伎俩或工具。例如,要在游戏对象四周绘制一个 10 个单位的黄色线框立方体,您能够应用以下代码:using UnityEngine;
public class GizmosExample : MonoBehaviour
{

void OnDrawGizmosSelected()
{
    // 在变换位置绘制一个黄色立方体
    Gizmos.color = Color.yellow;
    Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));
}

}
这是将立方体搁置在一个方向光游戏对象上时的外观。

A light GameObject with an extra script applied which draws a cube gizmo around its position 无关如何应用 Gizmos 的残缺文档,请参阅 Gizmos 脚本参考页面。HandlesHandles 相似于 Gizmos,但在交互性和操作方面提供了更多功能。Unity 自身提供的用于在 Scene 视图中操作我的项目的 3D 控件是 Gizmos 和 Handles 的组合。内置的 Handle GUI 有很多,如通过变换组件定位、缩放和旋转对象等相熟的工具。不过,您能够自行定义 Handle GUI,以与自定义组件编辑器联合应用。此类 GUI 对于编辑以程序形式生成的场景内容、“不可见”项和相干对象的组(如门路点和地位标记)十分实用。例如,以下是如何创立带有箭头手柄的圆弧区域,用于在 Scene 视图中批改“shield area”:using UnityEditor;
using UnityEngine;
using System.Collections;

// 我的项目中应已蕴含了此类
public class WireArcExample : MonoBehaviour
{

public float shieldArea;

}

// 应用附加到圆盘的 ScaleValueHandle 创立一个 180 度的线弧,
// 容许您批改 WireArcExample 中的 “shieldArea” 的值
[CustomEditor(typeof(WireArcExample))]
public class DrawWireArc : Editor
{

void OnSceneGUI()
{
    Handles.color = Color.red;
    WireArcExample myObj = (WireArcExample)target;
    Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea);
    myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1);
}

}

圆弧手柄和缩放手柄的示例无关如何应用 Handles 的残缺文档,请参阅 Handles 脚本参考页面。

退出移动版