1
This commit is contained in:
@@ -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}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user