This commit is contained in:
2026-09-29 18:09:08 +08:00
parent c91eaef60b
commit f4b5347fde
14 changed files with 866 additions and 762 deletions
@@ -320,7 +320,11 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// ⭐ 无操作自动退出:加载期间不计时,LoadResources 完成后重新开始计;确保倒计时面板初始隐藏
_idleExitArmed = false;
HideIdleExitWarning();
LoadResources();
// ⭐ 资源加载不再在这里启动:由 WebSocketReponseList 在"面板已显示 → 游戏场景加载完成"后
// 调用 BeginLoadResources() 触发,保证加载顺序为 面板 → 场景 → 资源。
// ⭐ 切换房间:继续用离房时留下的合并进度条,先把新面板自带的进度条藏掉,避免出现两条进度条
if (_changeRoomBar != null && JinDuTiao != null)
JinDuTiao.Hide();
RefreshGGKCount();
//UIManager.Instance.ShowBoard("太好看了");
var v = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomJoinNotice>>(args.ToString());
@@ -1155,6 +1159,15 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
/// </summary>
private static int _resourceFlowToken = 0;
/// <summary>
/// 外部触发资源加载:由 WebSocketReponseList 在"游戏面板已显示 → 游戏场景加载完成"后调用,
/// 保证加载顺序为 面板(加载页面)→ 场景 → 资源。
/// </summary>
public void BeginLoadResources()
{
LoadResources();
}
public async void LoadResources()
{
// ⭐ 捕获本轮令牌:同时使之前所有在途的加载/卸载残留流程作废
@@ -1170,18 +1183,22 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
CreateFishManager.Instance.isResources = false;
// ⭐ 重置卸载标记,下次进入可重新加载
_resourcesUnloaded = false;
await AudioResourcesData.LoadAudioGame();
// ⭐ 加载顺序(配套 AA 分包规划:路线最轻先进 → 鱼 → 音频最重殿后):
// ① 路线(几十KB,进房首屏关键,进度条 0→30%)
// ② 鱼预制体(30→70%)
// ③ 音频(70→80%,Union 全库音频是最重的一步,放最后不再拖住前段进度)
// EnterRoom 位置不动(出鱼系统就绪时序与原逻辑一致,仅资源加载顺序调整)
await MonsterMoveLine.LoadBezier();
if (flow != _resourceFlowToken) return; // ⭐ 期间已退出/切换,本轮作废
SetLoadProgress(0.2f);
await MonsterMoveLine.LoadBezier();
if (flow != _resourceFlowToken) return;
SetLoadProgress(0.4f);
SetLoadProgress(0.3f);
await FishResourcesData.LoadFishAssetsData();
if (flow != _resourceFlowToken) return;
SetLoadProgress(0.6f);
SetLoadProgress(0.7f);
await AudioResourcesData.LoadAudioGame();
if (flow != _resourceFlowToken) return;
await Addressables.LoadAssetsAsync<AudioClip>("Audio", clip =>
{