5. UI系统
Unity 提供了一个强大的 UI 系统,用于创建和管理游戏中的用户界面。以下是 Unity UI 系统的详细介绍和示例代码,包括基本 UI 组件、UI 布局以及处理 UI 事件。
基本UI组件
Text
Text 组件用于显示文字。
示例:创建 Text 组件
using UnityEngine;
using UnityEngine.UI;
public class CreateText : MonoBehaviour
{
void Start()
{
// 创建 Canvas
GameObject canvasGO = new GameObject("Canvas");
Canvas canvas = canvasGO.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvasGO.AddComponent<CanvasScaler>();
canvasGO.AddComponent<GraphicRaycaster>();
// 创建 Text
GameObject textGO = new GameObject("Text");
textGO.transform.parent = canvasGO.transform;
Text text = textGO.AddComponent<Text>();
text.text = "Hello, World!";
text.font = Resources.GetBuiltinResource<Font>("Arial.ttf");
text.color = Color.black;
// 设置 Text 的位置和大小
RectTransform rectTransform = text.GetComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(200, 50);
rectTransform.anchoredPosition = new Vector2(0, 0);
}
}
Image
Image 组件用于显示图片。
示例:创建 Image 组件
using UnityEngine;
using UnityEngine.UI;
public class CreateImage : MonoBehaviour
{
public Sprite imageSprite;
void Start()
{
// 创建 Canvas
GameObject canvasGO = new GameObject("Canvas");
Canvas canvas = canvasGO.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvasGO.AddComponent<CanvasScaler>();
canvasGO.AddComponent<GraphicRaycaster>();
// 创建 Image
GameObject imageGO = new GameObject("Image");
imageGO.transform.parent = canvasGO.transform;
Image image = imageGO.AddComponent<Image>();
image.sprite = imageSprite;
// 设置 Image 的位置和大小
RectTransform rectTransform = image.GetComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(100, 100);
rectTransform.anchoredPosition = new Vector2(0, 0);
}
}
Button
Button 组件用于创建按钮。
示例:创建 Button 组件
using UnityEngine;
using UnityEngine.UI;
public class CreateButton : MonoBehaviour
{
void Start()
{
// 创建 Canvas
GameObject canvasGO = new GameObject("Canvas");
Canvas canvas = canvasGO.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvasGO.AddComponent<CanvasScaler>();
canvasGO.AddComponent<GraphicRaycaster>