您的位置:

UnityUI框架详解

一、UnityUI框架有

Unity UI 框架是 Unity 的一个完全使用脚本编写的UI系统。它是 Unity 更早期的GUI系统之一,以前称为 Unity NGUI 框架。Unity UI框架中包含了很多组件,如按钮、文本、滚动视图等,以满足开发者对于UI的需求。其中,最常用的组件应该是 Text 和 Image,Text 用来显示文字, Image 用来显示图片。Unity UI框架的主要思想是将UI元素视为 GameObject,每个UI元素创建一个 GameObject 并挂接上相应的UI组件。开发者可以使用 RectTransform 组件控制UI元素的位置、大小、旋转等。

二、UnityUI框架原理

Unity UI框架是完全使用代码编写的,而不是使用 Unity 编辑器中的拖放,它主要由以下几个部分组成:

1. Canvas:Canvas(画布)用于渲染UI元素,是UI元素的顶层父对象。Canvas 可用于控制 UI 元素的渲染顺序,以及摄像机的渲染模式。

2. RectTransform:RectTransform(变换),用于控制UI元素的位置、大小、旋转等。

3. Graphic Raycaster:Graphic Raycaster 主要用于捕捉点击画布(Canvas)的事件,并将其传递给底层的GameObject。

4. UI Components:UI 组件是 Unity UI 框架中的基本元素,包括 Button、Text、Image、Slider、Scrollbar 等等。

三、UnityUI框架搭建

要使用 Unity UI 框架开发UI,首先需要在场景中创建一个 Canvas 对象,然后在 Canvas 上创建 UI 元素(即组件,如 Button、Text、Image 等)。在创建之前,需要先了解三种 Anchors,它们分别是左右上角、中心,左下角。在创建 UI 元素时,需要根据实际情况选择适合的 Anchor,并添加 RectTransform 组件以控制 UI 元素的位置和大小。最后在 UI 元素上添加对应的 UI 组件即可。

// 创建一个 Canvas
GameObject canvas = new GameObject("Canvas", typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));

// 设置 Canvas 的 RenderMode,Overlay:UI位于场景上方
canvas.GetComponent
  ().renderMode = RenderMode.ScreenSpaceOverlay;

// 添加一个背景图片
GameObject background = new GameObject("Background", typeof(Image));
background.transform.SetParent(canvas.transform, false);
background.GetComponent().sprite = Resources.Load("Sprites/background");

   
  

四、UnityUI框架有哪些

Unity UI 框架的主要组件包括:

1. Text 组件:用于显示文本。

2. Image 组件:用于显示图片。

3. Button 组件:用于响应鼠标点击事件。

4. Toggle 组件:用于开关选择。

5. Slider/Scrollbar 组件:用于控制进度条或滚动条。

6. Input Field 组件:用于输入文本。

五、UnityUI框架降低Lua消耗

如果在 Unity 中使用 Lua 脚本来开发UI,会使得代码的处理效率变得低下。为了降低 Lua 消耗,我们可以将一些常用的UI操作写成 C# 方法,并以函数调用的方式在Lua中调用。

例如,我们可以将设置 UI 文本的代码封装成一个 C# 函数 SetText:

using UnityEngine.UI;

public class UIUtils
{
    public static void SetText(GameObject gameObject, string text)
    {
        Text textObject = gameObject.GetComponent();
        if (textObject != null)
        {
            textObject.text = text;
        }
    }
}

  

然后在 Lua 脚本中使用:

local textObject = GameObject.Find("Text")
UIUtils.SetText(textObject, "Hello World!")

六、UnityUI框架解决层级问题

Unity UI 框架中,通过在 Canvas 组件下创建多个子 GameObject 并配置这些 GameObject 的 Canvas Renderer 属性,可以实现 UI 元素的层次关系。然而,如果 UI 元素太多,这种方法会变得很麻烦。因此,Unity UI 框架引入了另一种概念,即 Sorting Layer 和 Order In Layer。这些属性可以让开发者更方便地管理UI元素的层次关系,不需要手动指定每个 UI 元素的层级关系。

// 设置 UI 组件的Sorting Layer和 Order In Layer
Button myButton = gameObject.GetComponent

七、Unity框架

除了 Unity UI 框架之外,Unity 还有其他被广泛使用的框架,比如 Unity Networking、Unity Physics、Unity Navigation 等。这些框架都是 Unity 引擎的核心组成部分,可以让开发者更方便地实现各种游戏机制,提高开发效率。

八、UnityET框架

UnityET(Unity Easy Touch)是一个免费的Unity框架,可以帮助开发者更快速、更方便地开发游戏。该框架中包含很多常用组件,比如对象池、帧同步、网络通信等。此外,UnityET 使用 Protobuf 作为网络通信协议,可以有效地压缩数据,提高网络传输效率。

九、Unity框架MCN

Unity框架MCN(Model-Controller-Network)是一种基于 MVC 架构和帧同步技术的开发模式,用于游戏开发。该框架使用 C# 作为开发语言,可以帮助开发者更好地组织游戏代码,从而提高开发效率。

十、Unity常用的UI框架选取

常用的Unity UI框架包括:

1. NGUI:是Unity的一个非常流行的UI框架,通过简单的拖拽与Tab等UI操作实现。

2. UGUI:是Unity内置的UI工具包,用于制作基础UI。

3. DOTween:是一款为 Unity 提供动画效果的插件,可以实现复杂的Tween动画。

4. LeanTween:是一款优秀的 Tween 动画插件,比 Unity 自带的动画插件更加灵活。

5. TextMeshPro:是一个高质量的文本渲染插件,支持自然文本渲染和高品质的位图字体渲染。