74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
|
|
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 LoadingCompleteWaitTime { get; private set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 表现进度
|
||
|
|
/// </summary>
|
||
|
|
public float ShowProgress { get; private set; }
|
||
|
|
|
||
|
|
public void SetInfo(float changeProgressTime, float loadingCompleteWaitTime)
|
||
|
|
{
|
||
|
|
this.changeProgressTime = Mathf.Max(0f, changeProgressTime);
|
||
|
|
LoadingCompleteWaitTime = Mathf.Max(0f, loadingCompleteWaitTime);
|
||
|
|
|
||
|
|
preGetTime = Time.realtimeSinceStartup;
|
||
|
|
beginProgress = 0f;
|
||
|
|
targerProgress = 0f;
|
||
|
|
ShowProgress = 0f;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Update(float realProgress)
|
||
|
|
{
|
||
|
|
if (0f >= changeProgressTime) // 没有插值时间
|
||
|
|
{
|
||
|
|
targerProgress = realProgress;
|
||
|
|
preGetTime = Time.realtimeSinceStartup;
|
||
|
|
ShowProgress = targerProgress;
|
||
|
|
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
float realtimeSinceStartup = Time.realtimeSinceStartup;
|
||
|
|
|
||
|
|
if (!Mathf.Approximately(targerProgress, realProgress))
|
||
|
|
{
|
||
|
|
preGetTime = realtimeSinceStartup;
|
||
|
|
beginProgress = ShowProgress;
|
||
|
|
targerProgress = realProgress;
|
||
|
|
}
|
||
|
|
|
||
|
|
float timer = realtimeSinceStartup - preGetTime;
|
||
|
|
ShowProgress = Mathf.Lerp(beginProgress, targerProgress, Mathf.Clamp01(timer / changeProgressTime));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|