From 97de31e9a015cf139f5293a22e1575a43dfb6733 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 24 四月 2026 14:16:02 +0800
Subject: [PATCH] WEBGL ANDROID适配
---
Main/Manager/StageManager.cs | 67 +++++++++++++++++++++++----------
1 files changed, 47 insertions(+), 20 deletions(-)
diff --git a/Main/Manager/StageManager.cs b/Main/Manager/StageManager.cs
index 43ecc22..da801c2 100644
--- a/Main/Manager/StageManager.cs
+++ b/Main/Manager/StageManager.cs
@@ -4,6 +4,7 @@
using UnityEngine;
using UnityEngine.SceneManagement;
using ProjSG.Resource;
+using YooAsset;
public enum StageName
{
@@ -22,9 +23,10 @@
// public Action OnSwitchAccount;
private LaunchWinData launchWinData = null;
- public async UniTask Init()
+ public UniTask Init()
{
UIManager.Instance.OnCloseWindow += OnCloseWindow;
+ return UniTask.CompletedTask;
}
public void Release()
@@ -42,18 +44,29 @@
LoadingWin loadingWin = await UIManager.Instance.OpenWindowAsync<LoadingWin>();
InitLoadingWinData(loadingWin);
- // Phase 1 (0% ~ 60%): Scene loading
- AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Login");
- asyncOperation.allowSceneActivation = false;
-
- while (!asyncOperation.isDone)
+ // Phase 1 (0% ~ 50%): Scene loading
+ if (AssetSource.isUseAssetBundle)
{
- if (asyncOperation.progress >= 0.9f)
+ var handle = YooAssetService.Instance.BeginLoadScene("Assets/ResourcesOut/Scenes/Login.unity", LoadSceneMode.Single, LocalPhysicsMode.None, true);
+ while (!handle.IsDone)
{
- asyncOperation.allowSceneActivation = true;
+ if (handle.Progress >= 0.9f)
+ handle.UnSuspend();
+ loadingWin.SetProgress(handle.Progress * 0.5f);
+ await UniTask.Yield();
}
- loadingWin.SetProgress(asyncOperation.progress * 0.5f);
- await UniTask.Yield();
+ }
+ else
+ {
+ var asyncOp = SceneManager.LoadSceneAsync("Login");
+ asyncOp.allowSceneActivation = false;
+ while (!asyncOp.isDone)
+ {
+ if (asyncOp.progress >= 0.9f)
+ asyncOp.allowSceneActivation = true;
+ loadingWin.SetProgress(asyncOp.progress * 0.5f);
+ await UniTask.Yield();
+ }
}
// Phase 2 (50% ~ 100%): Manager initialization
@@ -89,7 +102,10 @@
{
UIManager.Instance.DestroyAllUI();
- await SceneManager.LoadSceneAsync("Login");
+ if (AssetSource.isUseAssetBundle)
+ await YooAssetService.Instance.LoadSceneAsync("Assets/ResourcesOut/Scenes/Login.unity");
+ else
+ await SceneManager.LoadSceneAsync("Login");
Main.OnSwitchToLoginScene();
currentStage = StageName.Login;
@@ -149,18 +165,29 @@
SoundPlayer.Instance.StopBackGroundMusic();
- // Phase 1 (0% ~ 60%): Scene loading
- AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Game");
- asyncOperation.allowSceneActivation = false;
-
- while (!asyncOperation.isDone)
+ // Phase 1 (0% ~ 50%): Scene loading
+ if (AssetSource.isUseAssetBundle)
{
- if (asyncOperation.progress >= 0.9f)
+ var handle = YooAssetService.Instance.BeginLoadScene("Assets/ResourcesOut/Scenes/Game.unity", LoadSceneMode.Single, LocalPhysicsMode.None, true);
+ while (!handle.IsDone)
{
- asyncOperation.allowSceneActivation = true;
+ if (handle.Progress >= 0.9f)
+ handle.UnSuspend();
+ loadingWin.SetProgress(handle.Progress * 0.5f);
+ await UniTask.Yield();
}
- loadingWin.SetProgress(asyncOperation.progress * 0.5f);
- await UniTask.Yield();
+ }
+ else
+ {
+ var asyncOp = SceneManager.LoadSceneAsync("Game");
+ asyncOp.allowSceneActivation = false;
+ while (!asyncOp.isDone)
+ {
+ if (asyncOp.progress >= 0.9f)
+ asyncOp.allowSceneActivation = true;
+ loadingWin.SetProgress(asyncOp.progress * 0.5f);
+ await UniTask.Yield();
+ }
}
// Phase 2 (50% ~ 100%): Manager data ready
--
Gitblit v1.8.0