Unity3D技术之游戏界面元素
游戏界面元素概述
Unity 为开发者提供了多种创建游戏图形用户界面 (GUI) 的选项。开发者既可以使用场景中的 GUI 文本和 GUI 纹理对象,也能通过 UnityGUI 从脚本生成界面。本文剩余部分将详细介绍如何入门并使用 UnityGUI。
GUI 脚本指南
概述
UnityGUI 具备快速、便捷地创建强大 GUI 的能力。与手动创建 GUI 对象不同,开发者只需手动定位 GUI 对象并编写处理其功能的脚本,几行代码就能实现所需的 GUI 功能。代码会生成 GUI 控件 (GUI controls),这些控件可通过单个函数调用完成实例化、定位和处理。
例如,以下代码能创建并处理一个按钮,无需在编辑器或其他地方进行额外操作:
// JavaScript
function OnGUI () {
if (GUI.Button (Rect (10, 10, 150, 100), "I am a button")) {
print ("You clicked the button!");
}
}
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
if (GUI.Button (new Rect (10, 10, 150, 100), "I am a button")) {
print ("You clicked the button!");
}
}
}
上述代码创建的按钮虽简单,但 UnityGUI 拥有强大且复杂的方法。GUI 的构建是一个广泛的主题,后续内容将帮助您快速了解它。本指南既适合通读,也可作为参考资料。
UnityGUI 基础
这部分涵盖了 UnityGUI 的基本概念,不仅提供了概述,还给出了一组可直接粘贴到自己代码中的应用示例。由于 UnityGUI 易于上手,建议从这里开始学习。
控件
本节列出了 UnityGUI 中每个可用的控件 (Control),并提供了显示结果的代码样例和图像,方便开发者了解每个控件的具体表现。
自定义
使 GUI 外观与游戏整体风格相匹配至关重要。UnityGUI 中的所有控件都可使用 GUIStyles 和 GUISkins 按照本节描述的方法进行自定义。
布局模式
UnityGUI 提供了两种布置 GUI 的方式:手动将每个控件放置在屏幕上,或者使用类似于 HTML 表工作原理的自动布局系统。开发者可根据需求选择任意一种方法,并且这两种方法可以自由组合。本节将详细讲解这两种系统的功能差异,并提供示例。
扩展 UnityGUI
通过使用新的控件 (Control) 类型,开发者可以轻松扩展 UnityGUI。本章将展示如何制作简单的复合 (compound) 控件,包括如何将其集成到 Unity 事件系统中。
扩展 Unity 编辑器
Unity 编辑器的 GUI 实际上是使用 UnityGUI 编写的。因此,开发者可以使用与游戏中 GUI 相同类型的代码来高度扩展编辑器。此外,还有大量专门用于编辑器 (Editor) 的 GUI 控件,可帮助开发者创建自定义编辑器 GUI。