Version: 6000.3
语言: 中文
Gizmos菜单
场景视图上下文菜单

使用小工具和手柄进行编程

GizmosHandles类允许您在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
视图和游戏视图,以及交互式手柄和控件。这两个类共同提供了一种方法,可以扩展这些视图中显示的内容,并构建交互式工具以任何你喜欢的方式编辑项目。

例如,与其在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
,您可以创建一个可拖动的圆半径小工具与场景中的游戏对象关联的图形叠加层,并显示在场景视图中。移动工具等内置场景工具是 Gizmo,您可以使用纹理或脚本创建自定义 Gizmo。某些 Gizmo 仅在选择游戏对象时绘制,而其他 Gizmo 则由编辑器绘制,而不管选择了哪个游戏对象。更多信息
请参阅术语表
在游戏中的非玩家角色周围,代表他们可以听到或看到玩家的区域。

小玩意儿

Gizmos类允许您将线条、球体、立方体、图标、纹理和网格绘制到场景视图:您正在创建的世界的交互式视图。您可以使用场景视图来选择和定位场景、角色、摄像机、灯光和所有其他类型的游戏对象。更多信息
请参阅术语表
在开发项目时用作调试、设置辅助工具或工具。

以下示例在游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
:

using UnityEngine;
public class GizmosExample : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        // Draw a yellow cube at the transform position
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));
    }
}

下图显示了此立方体放置在定向光游戏对象上的外观:

应用了额外脚本的轻型游戏对象,该脚本在其位置周围绘制立方体小工具
应用了额外脚本的轻型游戏对象,该脚本在其位置周围绘制立方体小工具

如需完整的 API 参考,包括使用示例,请参阅 API 参考页面Gizmos.

处理

手柄类似于小工具,但提供了更多的交互性和作性。Unity 提供的用于作场景视图中的项目的默认 3D 控件是小工具和手柄的组合。有许多内置的句柄 GUI,例如熟悉的工具,用于通过 Transform 组件定位、缩放和旋转对象。

您可以定义自己的句柄 GUI 以与自定义组件编辑器一起使用。此类 GUI 是编辑程序生成的场景内容、“不可见”项目和相关对象组(例如航路点和位置标记)的非常有用的方法。

以下示例创建带有箭头手柄的圆弧区域,允许您在场景视图中修改“盾牌区域”:

using UnityEditor;
using UnityEngine;
using System.Collections;

//this class should exist somewhere in your project
public class WireArcExample : MonoBehaviour
{
    public float shieldArea;
}

// Create a 180 degrees wire arc with a ScaleValueHandle attached to the disc
// that lets you modify the "shieldArea" value in the WireArcExample
[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);
    }
}
Arc 句柄和 Scale 句柄的示例
Arc 句柄和 Scale 句柄的示例

如需完整的 API 参考,包括使用示例,请参阅 API 参考页面Gizmos.

其他资源

Gizmos菜单
场景视图上下文菜单