| | |
| | | }
|
| | |
|
| | | float timer = 0f;
|
| | | float progressRateOfIncrease = 1f;
|
| | | float originalExpectTotalTime = -1f;
|
| | | float expectTotalTime = 0f;
|
| | | public float totalTime {
|
| | | get {
|
| | | return Mathf.Lerp(originalExpectTotalTime, expectTotalTime, Mathf.Clamp01(timer / expectTotalTime));
|
| | | }
|
| | | }
|
| | |
|
| | | Queue<LaunchTask> tasks = new Queue<LaunchTask>();
|
| | | LaunchTask currentTask = null;
|
| | | bool launchComplete = false;
|
| | | float surplusProgress = 0f;
|
| | | float surplusTime = 0f;
|
| | |
|
| | | void Start()
|
| | | {
|
| | |
| | | tasks.Enqueue(launchFadeOutTask);
|
| | |
|
| | | CalculateExpectTotalTime();
|
| | | originalExpectTotalTime = expectTotalTime;
|
| | | }
|
| | |
|
| | | void Update()
|
| | |
| | | else
|
| | | {
|
| | | timer += Time.deltaTime;
|
| | | var progress = progressInfo.totalProgress + progressRateOfIncrease * Time.deltaTime / totalTime;
|
| | | var progress = progressInfo.totalProgress + surplusProgress * (Time.deltaTime / surplusTime);
|
| | | progress = Mathf.Clamp(progress, 0, 0.95f);
|
| | |
|
| | | var partProgress = 0f;
|
| | | if (currentTask == null)
|
| | |
| | |
|
| | | void CalculateExpectTotalTime()
|
| | | {
|
| | | var time = timer;
|
| | | foreach (var item in tasks)
|
| | | {
|
| | | time += item.expectTime;
|
| | | surplusTime = 0f;
|
| | | foreach (var item in tasks) |
| | | { |
| | | surplusTime += item.expectTime; |
| | | }
|
| | |
|
| | | expectTotalTime = time;
|
| | | if (originalExpectTotalTime <= 0f)
|
| | | {
|
| | | originalExpectTotalTime = expectTotalTime;
|
| | | }
|
| | |
|
| | | progressRateOfIncrease = (expectTotalTime - timer) / (originalExpectTotalTime - timer);
|
| | | surplusProgress = 1 - progressInfo.totalProgress;
|
| | | }
|
| | |
|
| | | public enum LaunchStage
|
| | |
| | | public override void End()
|
| | | {
|
| | | expectTime = timer;
|
| | | UILoader.LoadWindowAsync("LaunchBackGroundWin", null);
|
| | | DebugEx.LogFormat("{0}执行时长:{1};", this.GetType().Name, timer);
|
| | | }
|
| | |
|
| | |
| | | protected set { LocalSave.SetFloat("LaunchFadeOutTask_ExpectTime", value); }
|
| | | }
|
| | |
|
| | | bool launchBackGroundLoadedOk = false;
|
| | | bool openBackGround = false;
|
| | |
|
| | | public override void Begin()
|
| | | {
|
| | | m_CurrentStage = LaunchStage.Complete;
|
| | |
| | | launchWin.FadeOut();
|
| | | }
|
| | |
|
| | | UILoader.LoadWindowAsync("LaunchBackGroundWin",
|
| | | (bool ok, UnityEngine.Object @object) =>
|
| | | {
|
| | | if (ok)
|
| | | {
|
| | | launchBackGroundLoadedOk = true;
|
| | | }
|
| | | });
|
| | | WindowCenter.Instance.Open<LaunchBackGroundWin>(true);
|
| | | }
|
| | |
|
| | | public override void End()
|
| | | {
|
| | | expectTime = timer;
|
| | | DebugEx.LogFormat("{0}执行时长:{1};", this.GetType().Name, timer);
|
| | | if (!openBackGround)
|
| | | {
|
| | | WindowCenter.Instance.Open<LaunchBackGroundWin>(true);
|
| | | }
|
| | |
|
| | | var launchBackGroundWin = WindowCenter.Instance.Get<LaunchBackGroundWin>();
|
| | | launchBackGroundWin.transform.SetAsFirstSibling();
|
| | | }
|
| | |
| | | return;
|
| | | }
|
| | | timer += Time.deltaTime;
|
| | |
|
| | | if (!openBackGround)
|
| | | {
|
| | | if (launchBackGroundLoadedOk)
|
| | | {
|
| | | WindowCenter.Instance.Open<LaunchBackGroundWin>();
|
| | | openBackGround = true;
|
| | | }
|
| | | }
|
| | |
|
| | | if (timer >= expectTime)
|
| | | {
|