2024-08-28 17:03:50 +08:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace Gameplay
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 加载表现类
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class LoadingDisplay
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 进度变化的插值时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
private float changeProgressTime;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 上次获取时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
private float preGetTime;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 目标进度
|
|
|
|
|
/// </summary>
|
|
|
|
|
private float targerProgress;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始进度
|
|
|
|
|
/// </summary>
|
|
|
|
|
private float beginProgress;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 表现进度
|
|
|
|
|
/// </summary>
|
|
|
|
|
public float ShowProgress { get; private set; }
|
|
|
|
|
|
2024-08-28 17:15:55 +08:00
|
|
|
public void SetInfo(float changeProgressTime)
|
2024-08-28 17:03:50 +08:00
|
|
|
{
|
2024-08-28 17:15:55 +08:00
|
|
|
this.changeProgressTime = changeProgressTime;
|
2024-08-28 17:03:50 +08:00
|
|
|
|
|
|
|
|
preGetTime = Time.realtimeSinceStartup;
|
|
|
|
|
beginProgress = 0f;
|
|
|
|
|
targerProgress = 0f;
|
|
|
|
|
ShowProgress = 0f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Update(float realProgress)
|
|
|
|
|
{
|
2024-08-30 15:58:29 +08:00
|
|
|
float realtimeSinceStartup = Time.realtimeSinceStartup;
|
|
|
|
|
|
2024-08-28 17:03:50 +08:00
|
|
|
if (0f >= changeProgressTime) // 没有插值时间
|
|
|
|
|
{
|
|
|
|
|
targerProgress = realProgress;
|
2024-08-30 15:58:29 +08:00
|
|
|
preGetTime = realtimeSinceStartup;
|
2024-08-28 17:03:50 +08:00
|
|
|
ShowProgress = targerProgress;
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!Mathf.Approximately(targerProgress, realProgress))
|
|
|
|
|
{
|
|
|
|
|
preGetTime = realtimeSinceStartup;
|
|
|
|
|
beginProgress = ShowProgress;
|
|
|
|
|
targerProgress = realProgress;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float timer = realtimeSinceStartup - preGetTime;
|
|
|
|
|
ShowProgress = Mathf.Lerp(beginProgress, targerProgress, Mathf.Clamp01(timer / changeProgressTime));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|