连连看项目实战之四(异步加载进度条)

举报
爱上游戏开发 发表于 2022/07/02 00:18:10 2022/07/02
【摘要】 推荐阅读:  我的CSDN 我的博客园 QQ群:704621321       在玩...

推荐阅读:

      在玩游戏过程中,从一个场景加载到另一个场景,我们会发现,往往不是直接切换过去的,而是停留在当前界面,加载下一场景资源,等下一场景加载完毕就切换至加载完成得场景。在轻度一点的游戏上我们往往感受不到它的存在,但是在重度游戏上,往往表现很明显。因为在场景切换中,需要加载的资源可能很大,需要一定的时间,为了照顾玩家的体验,往往在场景中制作一个进度条显示加载进度。
      在unity中新建一个场景,并添加如下组件(loadBg和loadProcess是两张一模一样的图片,包括位置信息都一样):
在这里插入图片描述
      接下来,我们需要对loadProcess组件进行修改,首先更改它的颜Color属性,Image Type:Filled,Fill Method : Horizontal,如下:
在这里插入图片描述
界面完成了,下面是代码部分:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
 
public class MyMenuUI : MonoBehaviour {
    //新游戏按钮
    public Button newGameButton;
    //加载界面
    public GameObject loadPanel;
    //滑动进度条
    public Image progressImg;
    //不断更新的进度值
    private int curProgressValue = 0;
    //进度显示百分比
    public Text proText;
 
    //异步加载进程
    private AsyncOperation async;
 
    void Start()
    {
        loadPanel.SetActive(false);//一开始禁用加载层。
    }
 
   //点击按钮跳场景
    public void NewGamePressed()
    {
        StartCoroutine(LoadScene());//调用加载场景的协程
        loadPanel.SetActive(true);//启用加载界面
    }
 
  //协程加载场景
    IEnumerator LoadScene()
    {
        async = SceneManager.LoadSceneAsync("TankGameScene");
        async.allowSceneActivation = false;//此处将允许自动场景加载禁用,防止到90%时自动跳转到新场景。
		yield return async;
    }
 
    void Update()
    {
        if (async == null)
        {
            return;//进程为空,跳出该函数
        }
        //总的进度值
        int progressValue = 100;
        if (curProgressValue < progressValue)
        {
            curProgressValue++;
        }
        proText.text = "Loading "+curProgressValue + "%";//实时更新进度百分比的文本显示
        progressImg.fillAmount = curProgressValue / 100f;//实时更新滑动进度图片的fillAmount值
        if (curProgressValue == 100)
        {
            async.allowSceneActivation = true;//启用自动加载场景
            proText.text = "OK";//文本显示完成OK
        }
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

      上面代码注释很详细,这里我就不一一解说了,有不懂的可以公众号后台留言,专业人士为你解答~

文章来源: unity3d.blog.csdn.net,作者:爱上游戏开发,版权归原作者所有,如需转载,请联系作者。

原文链接:unity3d.blog.csdn.net/article/details/86679087

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。