Unity UGUI的Canvas画布组件使用示例详解

 更新时间:2023年07月11日 08:46:58   作者:AlianBlank  
这篇文章主要介绍了Unity UGUI的Canvas画布组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Unity UGUI的Canvas(画布)组件的介绍及使用

1. 什么是Canvas组件?

Canvas(画布)是Unity UGUI系统中的一个重要组件,用于在屏幕上绘制UI元素。它是UI元素的容器,可以包含各种UI元素,如按钮、文本、图像等。Canvas组件提供了一种方便的方式来管理和渲染UI元素。

2. Canvas组件的工作原理

Canvas组件通过渲染器将UI元素绘制到屏幕上。它使用层级结构来管理UI元素的显示顺序,可以通过设置UI元素的层级来控制它们的显示顺序。Canvas组件还可以设置渲染模式,包括屏幕空间、世界空间和摄像机空间等。

3. Canvas组件的常用属性

  • Render Mode(渲染模式):设置Canvas的渲染模式,包括屏幕空间、世界空间和摄像机空间等。
  • Sorting Layer(排序层级):设置Canvas的排序层级,用于控制UI元素的显示顺序。
  • Order in Layer(层级顺序):设置UI元素在排序层级中的显示顺序。
  • Pixel Perfect(像素完美):启用像素完美模式,可以确保UI元素在不同分辨率下的显示效果一致。
  • Reference Pixels Per Unit(参考像素单位):设置参考像素单位,用于计算UI元素的大小和位置。

4. Canvas组件的常用函数

  • SetRenderMode(RenderMode mode):设置Canvas的渲染模式。
  • SetSortingLayerName(string name):设置Canvas的排序层级名称。
  • SetOrderInLayer(int order):设置UI元素在排序层级中的显示顺序。
  • SetPixelPerfect(bool pixelPerfect):设置是否启用像素完美模式。
  • SetReferencePixelsPerUnit(float pixelsPerUnit):设置参考像素单位。

5. 示例代码

示例1:创建一个屏幕空间的Canvas

using UnityEngine;
using UnityEngine.UI;
public class CanvasExample : MonoBehaviour
{
    void Start()
    {
        // 创建一个屏幕空间的Canvas
        GameObject canvasObject = new GameObject("Canvas");
        Canvas canvas = canvasObject.AddComponent<Canvas>();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        // 创建一个UI元素
        GameObject textObject = new GameObject("Text");
        textObject.transform.SetParent(canvas.transform);
        Text text = textObject.AddComponent<Text>();
        text.text = "Hello World!";
    }
}

操作步骤:

  • 创建一个空的GameObject,并将脚本挂载到该GameObject上。
  • 在Start函数中,创建一个屏幕空间的Canvas。
  • 创建一个UI元素,并将其设置为Canvas的子物体。
  • 设置UI元素的文本内容为"Hello World!"。

示例2:创建一个世界空间的Canvas

using UnityEngine;
using UnityEngine.UI;
public class CanvasExample : MonoBehaviour
{
    void Start()
    {
        // 创建一个世界空间的Canvas
        GameObject canvasObject = new GameObject("Canvas");
        Canvas canvas = canvasObject.AddComponent<Canvas>();
        canvas.renderMode = RenderMode.WorldSpace;
        // 创建一个UI元素
        GameObject textObject = new GameObject("Text");
        textObject.transform.SetParent(canvas.transform);
        Text text = textObject.AddComponent<Text>();
        text.text = "Hello World!";
    }
}

操作步骤:

  • 创建一个空的GameObject,并将脚本挂载到该GameObject上。
  • 在Start函数中,创建一个世界空间的Canvas。
  • 创建一个UI元素,并将其设置为Canvas的子物体。
  • 设置UI元素的文本内容为"Hello World!"。

示例3:设置Canvas的排序层级和层级顺序

using UnityEngine;
using UnityEngine.UI;
public class CanvasExample : MonoBehaviour
{
    void Start()
    {
        // 创建一个屏幕空间的Canvas
        GameObject canvasObject = new GameObject("Canvas");
        Canvas canvas = canvasObject.AddComponent<Canvas>();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        // 创建两个UI元素
        GameObject textObject1 = new GameObject("Text1");
        textObject1.transform.SetParent(canvas.transform);
        Text text1 = textObject1.AddComponent<Text>();
        text1.text = "Text 1";
        text1.canvas.sortingLayerName = "UI";
        text1.canvas.sortingOrder = 1;
        GameObject textObject2 = new GameObject("Text2");
        textObject2.transform.SetParent(canvas.transform);
        Text text2 = textObject2.AddComponent<Text>();
        text2.text = "Text 2";
        text2.canvas.sortingLayerName = "UI";
        text2.canvas.sortingOrder = 2;
    }
}

操作步骤:

  • 创建一个空的GameObject,并将脚本挂载到该GameObject上。
  • 在Start函数中,创建一个屏幕空间的Canvas。
  • 创建两个UI元素,并将它们设置为Canvas的子物体。
  • 设置第一个UI元素的排序层级为"UI",层级顺序为1。
  • 设置第二个UI元素的排序层级为"UI",层级顺序为2。

示例4:启用像素完美模式

using UnityEngine;
using UnityEngine.UI;
public class CanvasExample : MonoBehaviour
{
    void Start()
    {
        // 创建一个屏幕空间的Canvas
        GameObject canvasObject = new GameObject("Canvas");
        Canvas canvas = canvasObject.AddComponent<Canvas>();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        canvas.pixelPerfect = true;
        // 创建一个UI元素
        GameObject textObject = new GameObject("Text");
        textObject.transform.SetParent(canvas.transform);
        Text text = textObject.AddComponent<Text>();
        text.text = "Hello World!";
    }
}

操作步骤:

  • 创建一个空的GameObject,并将脚本挂载到该GameObject上。
  • 在Start函数中,创建一个屏幕空间的Canvas。
  • 启用像素完美模式。
  • 创建一个UI元素,并将其设置为Canvas的子物体。
  • 设置UI元素的文本内容为"Hello World!"。

示例5:设置参考像素单位

using UnityEngine;
using UnityEngine.UI;
public class CanvasExample : MonoBehaviour
{
    void Start()
    {
        // 创建一个屏幕空间的Canvas
        GameObject canvasObject = new GameObject("Canvas");
        Canvas canvas = canvasObject.AddComponent<Canvas>();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        canvas.referencePixelsPerUnit = 100;
        // 创建一个UI元素
        GameObject textObject = new GameObject("Text");
        textObject.transform.SetParent(canvas.transform);
        Text text = textObject.AddComponent<Text>();
        text.text = "Hello World!";
    }
}

操作步骤:

  • 创建一个空的GameObject,并将脚本挂载到该GameObject上。
  • 在Start函数中,创建一个屏幕空间的Canvas。
  • 设置参考像素单位为100。
  • 创建一个UI元素,并将其设置为Canvas的子物体。
  • 设置UI元素的文本内容为"Hello World!"。

注意事项

  • Canvas组件只能在UI层级下使用,不能用于3D场景中。
  • Canvas组件的渲染模式和排序层级需要根据实际需求进行设置。
  • 在使用Canvas组件时,需要注意UI元素的层级顺序,以确保它们的显示效果正确。

参考资料

以上就是Unity UGUI的Canvas画布组件使用示例详解的详细内容,更多关于Unity UGUI Canvas画布组件的资料请关注脚本之家其它相关文章!

相关文章

  • C#如何自动识别文件的编码

    C#如何自动识别文件的编码

    相信每位程序员在日常学习工作中,文件编码识别是必不可少的,一旦编码错误就会出现让人头疼的乱码,那么下面这篇文章将给大家介绍如何通过C#来自动识别文件的编码。文中给出了详细的示例代码,对大家的理解很有帮助,下面跟着小编一起来学习学习吧。
    2016-12-12
  • C#强制转换和尝试转换的方法

    C#强制转换和尝试转换的方法

    这篇文章主要为大家详细介绍了C#强制转换和尝试转换的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • C# Winform DataGridView数据刷新问题的解决办法

    C# Winform DataGridView数据刷新问题的解决办法

    DataGridView 是比较常用的表格控件,在 DataGridView 中显示数据, 一般使用 dataGridView1.DataSource = 数据源,来绑定数据,那么如何做到及时刷新数据呢,本文给大家介绍了C# Winform DataGridView数据刷新问题的解决办法,需要的朋友可以参考下
    2024-09-09
  • C#中TextBox实现输入提示功能的方法

    C#中TextBox实现输入提示功能的方法

    这篇文章主要介绍了C#中TextBox实现输入提示功能的方法,涉及C#中TextBox的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • C#9.0中init访问器的实现

    C#9.0中init访问器的实现

    本文主要介绍了C#9.0中init访问器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • C#实现ComboBox自动匹配字符

    C#实现ComboBox自动匹配字符

    本文介绍C#如何实现ComboBox自动匹配字符1.采用CustomSource当做提示集合2. 直接使用下拉列表中的项作为匹配的集合,需要了解的朋友可以参考下
    2012-12-12
  • C#调用sql2000存储过程方法小结

    C#调用sql2000存储过程方法小结

    这篇文章主要介绍了C#调用sql2000存储过程的方法,以实例形式分别对调用带输入参数及输出参数的存储过程进行了详细分析,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C#中==(双等于号)与equals()区别详解

    C#中==(双等于号)与equals()区别详解

    这两种方式也是大家在日常编码工作当中用的比较多的判断方式,本文就详细的介绍一下C# 双等于号与equals()区别,方便大家理解
    2021-05-05
  • Unity 按钮添加OnClick事件操作

    Unity 按钮添加OnClick事件操作

    这篇文章主要介绍了Unity 按钮添加OnClick事件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Unity中的Tilemap流程分析

    Unity中的Tilemap流程分析

    这篇文章给大家介绍Unity中的Tilemap流程分析,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07

最新评论