• 第五天 脚本与UI系统


    何为GUI?

     一、用脚本操作常用UI控件

    1、创建游戏界面

            新建一个3D工程,在默认Scene中新建UI控件。控件实际上就是一个游戏物体,在Hierarchy窗口空白处点击鼠标右键打开菜单,在菜单中选择UI,里面有很多可供选择的控件。

     (1)Canvas与EventSystem简介

    (2)界面比例问题

    (3)搭建UI测试场景

     Tip:

     -01-02

     -03

     -04

    -05

     这样,一个简易的UI界面就搭建好了。

    Tip:

    我们在场景中建好的画布尺寸和游戏尺可能不同,所以我们想让画布尺寸随着屏幕大小变化而变化,需要做出以下修改:

    2、矩形变换(Rect Transform)组件

     

    3、图片(Image)组件

    代码:

    1. using UnityEngine;
    2. using UnityEngine.UI;//UI脚本要包含次命名空间
    3. public class NewBehaviourScript : MonoBehaviour
    4. {
    5. Image image;
    6. //可以在编译器中指定另一张图片
    7. public Sprite otherSprite;
    8. float fillAmount = 0;
    9. void Start()
    10. {
    11. image = GetComponent<Image>();
    12. //直接将图片换成另一张图片
    13. if (otherSprite!=null)
    14. {
    15. image.sprite = otherSprite;
    16. }
    17. //将图片类型改为Filled,360°填充,方便旋转动画
    18. image.type = Image.Type.Filled;
    19. image.fillMethod = Image.FillMethod.Radial360;
    20. }
    21. void Update()
    22. {
    23. //制作一个旋转显示的动画效果,直线效果也类似
    24. //取值0~1
    25. image.fillAmount = fillAmount;
    26. fillAmount += 0.01f;
    27. if (fillAmount > 10)
    28. {
    29. fillAmount = 0;
    30. }
    31. }
    32. }

    演示效果:

     Tip:

    4、文本(Text)组件

     

    这是一段<color=#ff0000ff>富<b>文</b><size=50>本</size></color>

     

    5、按钮(Button)组件

    按钮是Unity中常用的控件:

     

    (1)按钮外观切换的方法

            

    (2)按钮是组合的控件

            

    (3)OnClick(点击)事件 

            

    1. using UnityEngine;
    2. public class ButtoTest : MonoBehaviour
    3. {
    4. public void TestButtonClick(int param)
    5. {
    6. Debug.Log("clicked it");
    7. Debug.Log("事件参数为:" + param);
    8. }
    9. }

     

    Tip:

    6、单选框(Toggle)组件

    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. public class ToggleTest : MonoBehaviour
    4. {
    5. Toggle toggle;
    6. void Start()
    7. {
    8. toggle = GetComponent<Toggle>();
    9. //初始不勾选
    10. toggle.isOn = false;
    11. }
    12. public void TestToggleChange(bool b)
    13. {
    14. if(b)
    15. {
    16. Debug.Log("勾选了单选框");
    17. }
    18. else
    19. {
    20. Debug.Log("取消勾选单选框");
    21. }
    22. }
    23. }

     

     

    7、滑动条(Slider)组件

    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. public class SliderTest : MonoBehaviour
    4. {
    5. //所控制的图片
    6. public Image image;
    7. //滑动条组件
    8. Slider slider;
    9. void Start()
    10. {
    11. slider = GetComponent<Slider>();
    12. slider.minValue = 0;
    13. slider.maxValue = 1;
    14. //将图片类型改为Filled,360填充
    15. image.type = Image.Type.Filled;
    16. image.fillMethod = Image.FillMethod.Radial360;
    17. }
    18. void Update()
    19. {
    20. //每一帧都让滑动条的值决定图片的填充大小
    21. image.fillAmount = slider.value;
    22. }
    23. }

     

    8、输入框(Input Field)组件

    9、滚动区域(Scroll Rect)组件

    Tip:

    1. public void OnScrollChange(Vector2 pos)
    2. {
    3. Debug.Log("滚动位置:"+pos)
    4. }

    二、脚本与事件系统

     Tip:

    1、常用输入事件

     

    2、常用输入事件参数

     

    3、动态添加事件响应方法

    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. public class NewBehaviourScript : MonoBehaviour
    4. {
    5. void Start()
    6. {
    7. Button btn;
    8. //获取三个子按钮,分别添加OnClick事件
    9. btn = transform.GetChild(0).GetComponent<Button>();
    10. btn.onClick.AddListener(Btn1);
    11. //用lambda表达式也是一样的
    12. btn = transform.GetChild(1).GetComponent<Button>();
    13. btn.onClick.AddListener(() => { Debug.Log("按钮2"); });
    14. btn = transform.GetChild(2).GetComponent<Button>();
    15. btn.onClick.AddListener(Btn3);
    16. }
    17. void Btn1()
    18. {
    19. Debug.Log("按钮1");
    20. }
    21. void Btn3()
    22. {
    23. Debug.Log("按钮3");
    24. Debug.Log("删除按钮3的响应函数");
    25. Button btn = transform.GetChild(2).GetComponent<Button>();
    26. btn.onClick.RemoveAllListeners();
    27. }
    28. }

    4、事件触发器(Event Trigger)

    5、动态绑定事件的高级技巧

     

    三、示例:界面制作与适配

    1、设置UI画布

     

    2、制作游戏界面准备

    (1)准备我的素材

     (2)进行素材的初始化设置

     

    打开 Window ----2D---Sprite Editor 打开Sprite Editor窗口,(然后Project窗口选中图片)

     

     

     

     

    接下来进行拉伸可以看到图片圆角部分会非常顺滑。 

     

    3、制作游戏界面

    (1)界面分区

     

     

     

     

    搭建顶部控件

     

    保持缩放比例

     

     

    4、制作背包界面

     

    5、利用进度条制作血条

     

     

  • 相关阅读:
    计算机毕业设计ssm小学教师网络培训网站ea3c0系统+程序+源码+lw+远程部署
    Day 62 数据结构(单向链表,单向循环链表,双向链表)
    基于python的C语言学习笔记(1)
    洛谷 P2491 [SDOI2011] 消防(树的直径,二分)
    JDBC数据库汇总Attack研究
    POSIX与System v消息队列
    docker安装卸载及基础命令
    习题练习 C语言(暑期第三弹)
    深入研究下Spring Boot Actuator 在kubernetes中探针的应用
    机器学习平台架构系列-2-之江天枢
  • 原文地址:https://blog.csdn.net/qq_51701007/article/details/123730375