版本:Unity 6 (6000.0)
语言 : 英语
使用随机数
空引用

Gizmos 和 Handles

Gizmos 和 Handles 类允许您在 场景场景包含游戏的环境和菜单。可以将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 词汇表
视图和游戏视图中绘制线条和形状,以及交互式手柄和控件。这两个类结合在一起,为您提供了一种扩展在这些视图中显示的内容并构建交互式工具的方法,以便以您喜欢的任何方式编辑您的项目。例如,与其在 检查器一个 Unity 窗口,用于显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 词汇表
中输入数字,不如创建一个可拖动的圆形半径 Gizmo,围绕游戏中一个非玩家角色,它代表了角色可以听到或看到玩家的区域。

本页简要概述了 Gizmos 和 Handles 类。有关 Gizmos 和 Handles 类中每个成员的完整文档和详尽参考,请参见 Gizmos与场景中游戏对象关联的图形叠加层,显示在场景视图中。内置场景工具(例如移动工具)是 Gizmos,您可以使用纹理或脚本创建自定义 Gizmos。一些 Gizmos 仅在选中游戏对象时才会绘制,而其他 Gizmos 则由编辑器绘制,无论选中了哪些游戏对象。 更多信息
参见 词汇表
Handles 的脚本参考页面。

Gizmos

Gizmos 类允许您将线条、球体、立方体、图标、纹理和网格绘制到 场景视图对您正在创建的世界进行交互式查看。使用场景视图选择和放置场景、角色、摄像机、灯光以及所有其他类型的游戏对象。 更多信息
参见 词汇表
中,用作调试、设置辅助工具或在开发项目时使用的工具。

例如,要在 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加到它的组件定义。 更多信息
参见 词汇表
周围绘制一个 10 个单位的黄色线框立方体,您可以使用以下代码

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

以下是在定向光游戏对象上放置立方体后的外观。

A light GameObject with an extra script applied which draws a cube gizmo around its position
一个光游戏对象,应用了额外的脚本,在它的位置周围绘制一个立方体 Gizmo

有关如何使用 Gizmos 的完整文档,请参见 Gizmos 脚本参考页面

Handles

Handles 类似于 Gizmos,但在交互性和操作方面提供更多功能。Unity 本身提供的用于操作场景视图中项目的 3D 控件是 Gizmos 和 Handles 的组合。有许多内置的 Handle GUI,例如熟悉的工具,可以通过 变换组件变换组件确定场景中每个对象的 Position、Rotation 和 Scale。每个游戏对象都具有变换。 更多信息
参见 词汇表
来定位、缩放和旋转对象。但是,您可以定义自己的 Handle 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);
    }
}
An example of an Arc handle and an Scale handle
弧形手柄和缩放手柄的示例

有关如何使用 Handles 的完整文档,请参见 Handles 脚本参考页面

使用随机数
空引用