This commit is contained in:
2026-08-09 17:57:46 +08:00
parent 316a83a6ac
commit 983192ba29
323 changed files with 32641 additions and 14505 deletions
@@ -216,24 +216,34 @@ public class FishResourcesData
Addressables.Release(dieHandle);
// 卸载鱼 Sprite
keys = new List<string> { Sprite_AALabel, GameManager.Instance.gameData.currGameType.ToString() };
var spriteHandle = Addressables.LoadAssetsAsync<Sprite>(keys, null, MergeMode.Intersection);
await spriteHandle.Task;
if (spriteHandle.Result != null)
// ⭐ try-catch 防护:Addressables 可能找不到 TuJian+游戏类型 交集的 Sprite,
// 抛 InvalidKeyException 导致整个 UnLoadFishAssetsData 中断,后续清理无法执行。
// Sprite 加载时已有 try-catch,卸载时也应对称处理
try
{
foreach (var sprite in spriteHandle.Result)
keys = new List<string> { Sprite_AALabel, GameManager.Instance.gameData.currGameType.ToString() };
var spriteHandle = Addressables.LoadAssetsAsync<Sprite>(keys, null, MergeMode.Intersection);
await spriteHandle.Task;
if (spriteHandle.Result != null)
{
if (FishResourcesSpriteDic.TryGetValue(sprite.name, out int id))
foreach (var sprite in spriteHandle.Result)
{
if (fishResourcesSpritesDic.Remove(id))
if (FishResourcesSpriteDic.TryGetValue(sprite.name, out int id))
{
Debug.Log($"卸载鱼Sprite: {sprite.name} (ID={id})");
if (fishResourcesSpritesDic.Remove(id))
{
Debug.Log($"卸载鱼Sprite: {sprite.name} (ID={id})");
}
}
}
}
Addressables.Release(spriteHandle);
}
catch (Exception e)
{
Debug.LogWarning($"[FishResourcesData] Sprite 卸载失败(游戏类型={GameManager.Instance.gameData.currGameType}),跳过此项: {e.Message}");
}
Addressables.Release(spriteHandle);
Debug.Log($"卸载完成,剩余Prefab数量: {fishPrefabDic.Count}, 死亡动效数量: {diePrefabDic.Count}, Sprite数量: {fishResourcesSpritesDic.Count}");
}