制作游戏加载进度条

首先,我们需要有一个背景进度条,然后在背景下面添加显示百分比的进度条图片,再创建一个Text,用于显示具体的百分比数字

大致结构如下:

然后就是通过代码实现这个功能了:

[SerializeField]
private Image ProcessBar;
[SerializeField]
private Text ProcessText;
private float DefLoadTimes = 4.8f;//主体进度默认需要花的时间 单位:秒
private float DefPercent = 0.8f;//主体进度值 

private void UpdateLoadProcess()
{
    if (Time.timeSinceLevelLoad < DefLoadTimes)
    {
        ProcessBar.fillAmount = (Time.timeSinceLevelLoad / DefLoadTimes) * DefPercent;

    }
    else
    {
        ProcessBar.fillAmount = Mathf.Min(0.98f, DefPercent + (Time.timeSinceLevelLoad - DefLoadTimes) / (DefLoadTimes * 2.0f) * (0.98f - DefPercent));
    }
    ProcessText.text = (ProcessBar.fillAmount * 100) + "%";
}

将这个UpdateLoadProcess放入Unity的生命周期函数Update中即可实现进度条加载的效果,如果需要在某个时机调用,那么在Udapte里面做条件判断即可。

上述代码用到的Time.timeSinceLevelLoad是Unity记录场景时间的,如果我们想要自己控制,比如游戏内某个不需要切换场景,但是要实现进度条的功能,我们可以直接用计时器的写法来控制:

public static float start_Time = 0;
public static float UpdateLoadProcess()
{

    float elapsedTime = Time.time - start_Time;
    if (elapsedTime < 4.8f)
    {
        return (elapsedTime / 4.8f) * 0.8f;
    }
    else
    {
        return Mathf.Min(0.98f, 0.5f + (elapsedTime - 4.8f) / (4.8f * 2.0f) * (0.98f - 0.8f));
    }

}

下面的写法就没有使用各种变量代替参数了,具体调整可以结合两个方法

 

posted @ 2024-10-30 16:37  Jet清远  阅读(6)  评论(0编辑  收藏  举报