Unity3D UGUI基础--画布的三种模式详解

发布时间 2023-12-15 10:44:58作者: 游戏开发阿博

在Unity3D中,UGUI是一种用户界面系统,它提供了一种简单而强大的方式来创建和管理游戏中的用户界面。UGUI中的一个重要概念是画布(Canvas),它是用来放置和渲染UI元素的容器。画布有三种模式:Screen Space - Overlay、Screen Space - Camera和World Space。本文将详细介绍这三种模式的特点、技术实现以及代码示例。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

一、Screen Space - Overlay(屏幕空间-覆盖)

在Screen Space - Overlay模式下,画布会被渲染在屏幕的最上层,无视场景中的其他物体。这意味着UI元素不会受到场景中其他物体的遮挡,始终显示在屏幕的最上层。这种模式适用于大多数的2D游戏和简单的UI需求。

技术实现:
在Unity中创建一个Screen Space - Overlay画布非常简单。首先,右键点击Scene视图中的Hierarchy面板,选择UI->Canvas。然后,在Inspector面板中,将Render Mode设置为Screen Space - Overlay即可。

代码实现:

using UnityEngine;
using UnityEngine.UI;

public class CanvasManager : MonoBehaviour
{
    public Canvas canvas;

    void Start()
    {
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
    }
}

二、Screen Space - Camera(屏幕空间-摄像机)

在Screen Space - Camera模式下,画布会被渲染在摄像机的前面。这意味着UI元素将会受到摄像机的视角和遮挡的影响,当摄像机移动或旋转时,UI元素也会相应地发生变化。这种模式适用于需要与3D场景进行交互的游戏。

技术实现:
在Unity中创建一个Screen Space - Camera画布也很简单。首先,右键点击Scene视图中的Hierarchy面板,选择UI->Canvas。然后,在Inspector面板中,将Render Mode设置为Screen Space - Camera,并选择一个摄像机作为渲染目标。

代码实现:

using UnityEngine;
using UnityEngine.UI;

public class CanvasManager : MonoBehaviour
{
    public Canvas canvas;
    public Camera camera;

    void Start()
    {
        canvas.renderMode = RenderMode.ScreenSpaceCamera;
        canvas.worldCamera = camera;
    }
}

三、World Space(世界空间)

在World Space模式下,画布会被渲染在场景中的某个位置,可以与场景中的其他物体进行交互。这种模式适用于需要在3D场景中放置复杂的UI元素的游戏。

技术实现:
在Unity中创建一个World Space画布稍微复杂一些。首先,右键点击Scene视图中的Hierarchy面板,选择UI->Canvas。然后,在Inspector面板中,将Render Mode设置为World Space。接下来,需要在场景中创建一个空物体,将其作为画布的父物体,并将其位置和旋转设置为所需的位置。最后,将画布的Transform组件的位置和旋转设置为(0, 0, 0),并将其Scale设置为所需的大小。

代码实现:

using UnityEngine;
using UnityEngine.UI;

public class CanvasManager : MonoBehaviour
{
    public Canvas canvas;
    public Transform parent;

    void Start()
    {
        canvas.renderMode = RenderMode.WorldSpace;
        canvas.transform.SetParent(parent);
        canvas.transform.localPosition = Vector3.zero;
        canvas.transform.localRotation = Quaternion.identity;
        canvas.transform.localScale = Vector3.one;
    }
}

总结:
画布是Unity3D UGUI中一个重要的概念,它决定了UI元素的渲染方式和位置。本文详细介绍了UGUI画布的三种模式:Screen Space - Overlay、Screen Space - Camera和World Space,并给出了相应的技术实现和代码示例。根据游戏需求,选择合适的画布模式能够更好地实现所需的UI效果。