当前位置:   article > 正文

Unity UI学习(2)——进度条的实现_unity 界面水波进度条

unity 界面水波进度条

今天又新学了下进度条的实现,收获还挺多,接触到了协程、迭代器等概念,目前理解还不是很多,后面慢慢理解吧。

在代码里面写了很多注释帮助自己理解,所以,文字上就不做多于的阐释(虽然理解也比较浅薄)。

本次制作进度条需要的资源有:1、一个场景用来做载入时进度条展示,这个场景可以设置背景,需要一个进度条背景,以及进度条本身,进度条背景和进度条本身是两个被拉长的图片,两者间的颜色做好区分,以显示进度加载情况。还需要一个Text用来展示百分制的进度情况。2、需要载入的场景,我直接使用了之前制作技能冷却图标的场景。

下图是载入时的场景中的布局(进度条图片因为初始数值为0,所以没有被显示出来):

需要注意的是在unity Build Settings中将两个场景都加入。

具体代码如下:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.SceneManagement;
  6. public class Loadprogress : MonoBehaviour {
  7. private AsyncOperation aync;
  8. public Image load;//进度条的图片
  9. private int culload=0;//已加载的进度
  10. public Text loadtext;//百分制显示进度加载情况
  11. void Start () {
  12. //开启一个协程,既不是进程也不是线程,目前了解不够深刻。
  13. //目前简单的理解是,协程会根据迭代器中yield return 来判断什么时候暂时退出当前函数
  14. //然后在下一帧或者下一段时间中继续执行yield return 后面的函数代码
  15. //使用协程是为了简化代码的复杂度,将代码分成不同段在不同的帧里面执行以及实现延时的效果
  16. //startCoroutine会在第一次运行后一直执行,直到有代码控制它停止
  17. StartCoroutine("LoadScence");
  18. }
  19. //定义一个迭代器,每一帧返回一次当前的载入进度,同时关闭自动的场景跳转
  20. //因为LoadScenceAsync每帧加载一部分游戏资源,每次返回一个有跨越幅度的progress进度值
  21. //当游戏资源加载完毕后,LoadScenceAsync会自动跳转场景,所以并不会显示进度条达到了100%
  22. //关闭自动场景跳转后,LoadSceneAsync只能加载90%的场景资源,剩下的10%场景资源要在开启自动场景跳转后才加载
  23. IEnumerator LoadScence()
  24. {
  25. aync = SceneManager.LoadSceneAsync("SkillCD");//SkillCD为要跳转的场景
  26. aync.allowSceneActivation = false;
  27. yield return aync;
  28. }
  29. void Update () {
  30. //判断是否有场景正在加载
  31. if (aync == null)
  32. {
  33. return;
  34. }
  35. int progrssvalue = 0;
  36. //当场景加载进度在90%以下时,将数值以整数百分制呈现,当资源加载到90%时就将百分制进度设置为100,
  37. if (aync.progress < 0.9f)
  38. {
  39. progrssvalue = (int)aync.progress * 100;
  40. }
  41. else
  42. {
  43. progrssvalue = 100;
  44. }
  45. //每帧对进度条的图片和Text百分制数据进行更改,为了实现数字的累加而不是跨越,用另一个变量来实现。
  46. if (culload < progrssvalue)
  47. {
  48. culload++;
  49. load.fillAmount = culload / 100f;
  50. loadtext.text = culload.ToString() + "%";
  51. }
  52. //一旦进度到达100时,开启自动场景跳转,LoadSceneAsync会加载完剩下的10%的场景资源
  53. if (culload == 100)
  54. {
  55. aync.allowSceneActivation = true;
  56. }
  57. }
  58. }

下面为实际载入时的运行效果(上面的脚本代码可以随意绑定一个已经存在的游戏物体,并将进度条图片和Text UI拖入脚本里面。)

以上,祝好!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/102711?site
推荐阅读
相关标签
  

闽ICP备14008679号