综合了各种大佬的写法发现有一种最为简短的(当然不知道效率是不是最高的)
首先游戏进度条的作用是 为了让玩家再场景加载的时候不误以为是游戏崩掉了是增加游戏体验感的一种工具。
首先先右键创建一个slider 其中有一个子对象我们不需要, 如图是去掉后的。(这里选择的加载场景方式是 先从其他场景进入这个加载场景 然后它在自动加载其他场景)当然这样肯定不是最好的,大家根据自己需求更改就好
然后是脚本部分
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class jiazaisliuderer : MonoBehaviour
{
//AsyncOperation async;
public Slider slider;
public Text text;//百分制显示进度加载情况
void Start()
{
//开启协程
StartCoroutine("loginMy");
}
IEnumerator loginMy()
{
AsyncOperation op = SceneManager.LoadSceneAsync("SRODUCT是CENCE"); //此处改成要加载的场景名
while (!op.isDone)
{
float progress = op.progress / 0.9f; // 这里设置0.9 是因为 slider 的值是因为场景的进度是0 到0.9 所以 最后给slider 的值应该是比如最大是0.9 的话0.9/0.9为1
slider.value = progress;
text.text = Mathf.FloorToInt(progress * 100).ToString() + "%";
yield return null;
}
}
}
因为是面向新手 所以一行一行讲 主体部分就是这个协程函数 它的作用就是用来异步加载场景
首先是第一行 调用这个类 异步加载所要到达的场景
然后是一个循环 条件是没完成进程
然后是重点 float progress = op.progress / 0.9f; 这里面除以0.9的原因是 因为这个异步加载的范围值是从0 到 0.9 而我们想要展示给玩家的进度条和百分比是0 到 1(0 到100) 所以要用进度除以0.9得到当前 进度条所相对应的 大小
最后 yield return null; 因为是协程函数所以必须要有这个 又因为没有什么其他条件所以 返回一个null 即可 。
划重点 这个一定要放在while 里面 否则就会死循环 卡住你的 unity
最后可能有小伙伴不是很懂 异步加载是什么意思可以去搜索一下 网上好多讲解都很细致
最后其实我觉的进度条就算不这么弄也可以 反正说白了就是 给玩家一点安慰 不如直接 随便弄个速度加载进度条 最后加载玩直接百分百。