Unity GUI

Unity UI

一、GUI(IMGUI)

1.1定义

即时模式用户交互界面,是一个完全独立的功能系统,不同于Unity基于游戏对象的UI,是一个代码驱动的用户交互界面

1.2 作用

(1)程序员创建的游戏内部的调试工具

(2)为脚本组件创建自定义检视面板

(3)创建新的编辑器窗口和工具以拓展unity本身(一般用作内置游戏工具)

1.3 弊端

丑,代码驱动,一般不作为玩家制作ui功能

1.4 工作原理

(1)在继承MonoBehavior的脚本的生命周期函数OnGUI中编写相关功能,并将脚本挂载到合适的对象上。

(2)OnGUI()每帧都会调用,在LateUpdate之后,OnDisable之前执行无需显式创建和销毁GUI控件

在继承MonoBehaviour的脚本中的特殊函数里调用GUI提供的方法,类似生命周期函数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class lesson1 : MonoBehaviour
{

private void OnGUI()
{
    //在其中书写 GUI相关代码 即可显示GUI内容
}
//注意:
//1.它每帧执行 相当于是用于专门绘制GUI界面的函数
//2.一般只在其中执行GUI相关界面绘制和操作逻辑
//3.该函数 在 OnDisable之前 LateUpdate之后执行
//4.只要是继承Mono的脚本 都可以在OnGUI中绘制GUI
}

为了驱动该系统,需要在实现脚本上调用OnGUI函数,例如:

Void OnGUI(){
    if (GUILayout.Button("Press Me"))
        Debug.log("Hello!");
}

1.5 函数

基本函数参数解释
public static bool Button (Rect position, string text);position屏幕上用于按钮的矩形
public static bool Button (Rect position, Texture image);text要在按钮上显示的文本
public static bool Button (Rect position, GUIContent content);content该按钮的文本、图像和工具提示
public static bool Button (Rect position, string text, GUIStyle style);style要使用的样式。如果省略则当前使用GUISkin的button样式
public static bool Button (Rect position, Texture image, GUIStyle style);
public static bool Button (Rect position, GUIContent content, GUIStyle style);

1.6 控件声明的关键信息

Type(Position,Content)

~Type是指控件类型,通过调用GUI类或GUILayout类中的函数来声明该类型

~Position是控件函数中的第一个参数,是一个Rect。Rect有最左侧位置、最顶部位置、总宽度、总高度四个属性,对应于像素值。坐标系基于左上角。

~Content是控件的第二个参数,控件一起显示的实际内容。

1.要显示文本,将字符串作为Content参数传递。
2.要显示图像,声明Texture2D变量。将其作为Content参数传递。
3.还可通过一起显示图像和文本。
4.还可以定义工具提示(Tooltip),当鼠标悬停在GUI上时将工具提示显示。

1.7 创建一个单击按钮

当用户点击该按钮时,立即执行一些操作。

// Draws 2 buttons, one with an image, and other with a text
// And print a message when they got clicked.using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour
{
    public Texture btnTexture;    void OnGUI()
    {
        if (!btnTexture)
        {
            Debug.LogError("Please assign a texture on the inspector");
            return;
        }        if (GUI.Button(new Rect(10, 10, 50, 50), btnTexture))
            Debug.Log("Clicked the button with an image");        if (GUI.Button(new Rect(10, 70, 50, 30), "Click"))
            Debug.Log("Clicked the button with text");
    }
}

1.8 GUI控件绘制的共同点

1.他们都是GUI公共类中提供的静态函数 直接调用即可

2.他们的参数都大同小异
位置参数:Rect参数 x y位置 w h尺寸
显示文本:string参数
图片信息:Texture参数
综合信息:GUIContent参数
自定义样式:GUIStyle参数

3.每一种控件都有多种重载,都是各个参数的排列组合
必备的参数内容 是 位置信息和显示信息

二、UGUI

2.1 六大基础组件

Canvas对象上依附的:

Canvas:画布组件,主要用于渲染UI控件

Canvas Scaler:画布分辨率自适应组件,主要用于分辨率自适应

Canvas Raycaster:射线事件交互组件,主要用于控制射线相应相关

RectTransform:UI对象位置锚点控制组件,主要用于控制位置和对其方式

EventSystem对象上依附的:

EventSystem和Standalone Input Module:玩家输入事件响应系统和独立输入模块组件,主要用于监听玩家操作

EventSystem事件系统(即键盘、鼠标、触摸或者自定义输入)

总结:

(1)如何在Unity使用UGUI——无需引入内容,直接右键使用

(2)六大基础组件在哪里——Canvas对象和EventSystem对象上

(3)六大基础组件概述----六大组件分别有什么作用

2.2 课后测试

2.2.1 canvas

(1)canvas组件用来干什么?

画布组件,用于渲染显示ui控件,ui控件必须作为子对象

(2)场景中可以有多个canvas对象

不同的渲染和分辨率适应方式(不常用)

(3)canvas组件的3种渲染方式

覆盖模式:ui始终显示在最前面

摄像机模式:3D物体可以显示在ui前

3D模式:用于制作3DUI,在VR和AR中常用,游戏中的3D UI效果才使用

2.2.2 CanvasScaler

CanvasScaler----画布控制器

作用:负责不同分辨率下UI控件的大小自适应,不负责位置,位置由之后的transform进行控制,主要提供了三种负责分辨率自适应的模式。

2.2.3 相关知识

(1)屏幕分辨率:当前设备的分辨率,编辑器下Game窗口的state统计数据实时查看当前屏幕分辨率,这会参与分辨率自适应的计算;

(2)画布大小和缩放系数:通过一定算法以屏幕分辨率和参考分辨率参与计算得出缩放系数,该结果会影响所有UI控件的缩放大小。选中canvas在transform中的宽高和缩放,宽高x缩放=画布;

(3)参考分辨率:在缩放模式的宽高模式中出现的参数,参与分辨率自适应的计算

2.2.4 Graphic Raycaster

1.Graphic Raycaster组件用来干啥?

用于UI元素的射线检测,用于触发交互

2.Graphic Raycaster参数

Ignore Reversed Graphic:是否忽略反转图形

Blocking Objects:射线被哪些类型的碰撞器阻挡(在覆盖渲染模式下无效)

Blocking Mask:射线被哪些层级的碰撞器阻挡(在覆盖渲染模式下无效)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靖簳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值