52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using Cysharp.Threading.Tasks;
|
||
|
using Game;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
public class UILoading : MonoBehaviour
|
||
|
{
|
||
|
[SerializeField]
|
||
|
private Slider _slider;
|
||
|
private bool isFinish;
|
||
|
|
||
|
// Start is called before the first frame update
|
||
|
void Start()
|
||
|
{
|
||
|
EventManager.Instance.Subscribe(LoadingGameSceneFinishEventArgs.EventId, LoadingGameSceneFinishEvent);
|
||
|
this._slider.maxValue = 100;
|
||
|
isFinish = false;
|
||
|
|
||
|
UniTask.Create(this.WaitFinishAsync);
|
||
|
}
|
||
|
|
||
|
private async UniTask WaitFinishAsync()
|
||
|
{
|
||
|
// Debug.Log("开始循环等待");
|
||
|
while (!isFinish)
|
||
|
{
|
||
|
await UniTask.Yield();
|
||
|
// Debug.Log("循环等待");
|
||
|
var f = this._slider.maxValue-this._slider.value;
|
||
|
this._slider .value += f;
|
||
|
}
|
||
|
// Debug.Log("循环等待完成");
|
||
|
this._slider.value = this._slider.maxValue;
|
||
|
await UniTask.Delay(500);
|
||
|
GameObject.DestroyImmediate(this.gameObject);
|
||
|
}
|
||
|
|
||
|
private void LoadingGameSceneFinishEvent(object sender, GameEventArgs e)
|
||
|
{
|
||
|
var args = e as LoadingGameSceneFinishEventArgs;
|
||
|
isFinish = args.IsFinish;
|
||
|
}
|
||
|
|
||
|
private void OnDestroy()
|
||
|
{
|
||
|
EventManager.Instance.Unsubscribe(LoadingGameSceneFinishEventArgs.EventId, LoadingGameSceneFinishEvent);
|
||
|
}
|
||
|
}
|