The Gizmos 和 Handles 类允许你在场景场景包含你的游戏的环境和菜单。将每个独特的场景文件视为一个独特等级。每个场景中都放置你的环境、障碍物和装饰,本质上在片段中设计构建你的游戏。更多信息
参考术语表视图和游戏视图中绘制线条和形状,以及交互式 Handles 和控制。这两个类一起为你提供了一种扩展这些视图中所显示内容的方式,并可以构建交互式工具以任何你想要的方式编辑你的项目。例如,而不是在检查器一个 Unity 窗口,显示有关当前选定的 GameObject、资产或项目设置的信息,允许你检查和编辑值。更多信息
参考术语表中输入数字,你可以在游戏中一个非玩家角色周围创建一个可拖动的圆形半径 Gizmos,代表它们可以听到或看到玩家的区域。
此页面提供了 Gizmos 和 Handles 类的简单概述。有关完整文档和 Gizmos 和 Handles 类每一成员的详尽参考,请参阅 Gizmos与场景中的 GameObject 关联的图形叠加层,并在场景视图中显示。内置场景工具,如移动工具,是 Gizmos,您可以使用纹理或脚本创建自定义 Gizmos。一些 Gizmos 仅在选择 GameObject 时绘制,而其他 Gizmos 不论选择哪些 GameObject 都由编辑器绘制。更多信息
参考术语表 和 Handles 的脚本参考页面。
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));
}
}
以下是该立方体放置在方向性光 GameObject 上的样子。
有关如何使用 Gizmos 的完整文档,请参阅Gizmos 脚本参考页面。
句柄与Gizmos类似,但提供了更多的交互性和操纵功能。Unity自身提供给场景视图中操作项目的3D控件是Gizmos和句柄的组合。存在许多内置的句柄GUI,例如通过变换组件变换组件确定场景中每个对象的Position、Rotation和Scale。每个GameObject都有一个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);
}
}
有关如何使用句柄的完整文档,请参阅句柄脚本参考页面。