Skip to content

Commit d69216a

Browse files
committed
fix(UI): 修复资源加载异常处理和属性名拼写错误
添加try-catch块以捕获异步资源加载过程中的异常,防止崩溃 将属性名从"DefiledAsset"更正为"DescAsset",修复拼写错误 修正注释中的"通明通道"为"透明通道"
1 parent f7f1043 commit d69216a

1 file changed

Lines changed: 30 additions & 23 deletions

File tree

Runtime/FairyGUILoadAsyncResourceHelper.cs

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void ReleasePackage(string uiPackageName)
6262
{
6363
if (m_UIPackages.TryGetValue(uiPackageName, out var uiPackageData))
6464
{
65-
AssetComponent.UnloadAsset(uiPackageData.DefiledAssetPath);
65+
AssetComponent.UnloadAsset(uiPackageData.DescAssetPath);
6666
if (uiPackageData.ResourceAssetPath != null)
6767
{
6868
AssetComponent.UnloadAsset(uiPackageData.ResourceAssetPath);
@@ -84,7 +84,7 @@ public void ReleaseAllPackage()
8484
{
8585
foreach (var kv in m_UIPackages)
8686
{
87-
AssetComponent.UnloadAsset(kv.Value.DefiledAssetPath);
87+
AssetComponent.UnloadAsset(kv.Value.DescAssetPath);
8888
AssetComponent.UnloadAsset(kv.Value.ResourceAssetPath);
8989
kv.Value.Dispose();
9090
}
@@ -123,32 +123,33 @@ private AssetComponent AssetComponent
123123
[UnityEngine.Scripting.Preserve]
124124
public async void LoadResource(string assetName, string uiPackageName, string extension, PackageItemType type, Action<bool, string, object> action)
125125
{
126-
if (!m_UIPackages.TryGetValue(uiPackageName, out var uiPackageData))
126+
try
127127
{
128-
uiPackageData = new UIPackageData(uiPackageName);
129-
m_UIPackages.Add(uiPackageName, uiPackageData);
130-
}
131-
128+
if (!m_UIPackages.TryGetValue(uiPackageName, out var uiPackageData))
129+
{
130+
uiPackageData = new UIPackageData(uiPackageName);
131+
m_UIPackages.Add(uiPackageName, uiPackageData);
132+
}
132133

133-
if (type == PackageItemType.Misc)
134+
if (type == PackageItemType.Misc)
134135
{
135136
// 描述文件
136137
AssetHandle assetHandle;
137-
if (uiPackageData.DefiledAssetHandle == null)
138+
if (uiPackageData.DescAssetHandle == null)
138139
{
139140
assetHandle = await AssetComponent.LoadAssetAsync<UnityEngine.Object>(assetName);
140-
uiPackageData.SetDefiledAssetHandle(assetHandle, assetName);
141+
uiPackageData.SetDescAssetHandle(assetHandle, assetName);
141142
}
142143
else
143144
{
144-
assetHandle = uiPackageData.DefiledAssetHandle;
145+
assetHandle = uiPackageData.DescAssetHandle;
145146
}
146147

147148
action.Invoke(assetHandle != null && assetHandle.AssetObject != null, assetName, assetHandle?.GetAssetObject<TextAsset>());
148149
return;
149150
}
150151

151-
if (type == PackageItemType.Image || type == PackageItemType.Atlas) //如果FGUI导出时没有选择分离通明通道,会因为加载不到!a结尾的Asset而报错,但是不影响运行
152+
if (type == PackageItemType.Image || type == PackageItemType.Atlas) //如果FGUI导出时没有选择分离透明通道,会因为加载不到!a结尾的Asset而报错,但是不影响运行
152153
{
153154
if (assetName.IndexOf("!a", StringComparison.OrdinalIgnoreCase) > -1)
154155
{
@@ -185,7 +186,7 @@ public async void LoadResource(string assetName, string uiPackageName, string ex
185186
}
186187

187188
case PackageItemType.Atlas:
188-
case PackageItemType.Image: //如果FGUI导出时没有选择分离通明通道,会因为加载不到!a结尾的Asset而报错,但是不影响运行
189+
case PackageItemType.Image: //如果FGUI导出时没有选择分离透明通道,会因为加载不到!a结尾的Asset而报错,但是不影响运行
189190
{
190191
if (assetName.IndexOf("!a", StringComparison.OrdinalIgnoreCase) > -1)
191192
{
@@ -240,8 +241,14 @@ public async void LoadResource(string assetName, string uiPackageName, string ex
240241
}
241242
}
242243

243-
Log.Error("加载资源失败 Unknown file type: " + assetName + " extension: " + extension);
244-
action.Invoke(false, assetName, null);
244+
Log.Error("加载资源失败 Unknown file type: " + assetName + " extension: " + extension);
245+
action.Invoke(false, assetName, null);
246+
}
247+
catch (Exception ex)
248+
{
249+
Log.Error($"LoadResource failed for '{assetName}': {ex}");
250+
action?.Invoke(false, assetName, null);
251+
}
245252
}
246253

247254
/// <summary>
@@ -315,13 +322,13 @@ public void SetResourceAllAssetsHandle(AllAssetsHandle allAssetsHandle, string a
315322
/// <remarks>
316323
/// Sets the definition asset handle and its path.
317324
/// </remarks>
318-
/// <param name="defiledAssetHandle">描述文件句柄 / The definition asset handle</param>
319-
/// <param name="defiledAssetPath">描述文件路径 / The definition asset path</param>
325+
/// <param name="descAssetHandle">描述文件句柄 / The definition asset handle</param>
326+
/// <param name="descAssetPath">描述文件路径 / The definition asset path</param>
320327
[UnityEngine.Scripting.Preserve]
321-
public void SetDefiledAssetHandle(AssetHandle defiledAssetHandle, string defiledAssetPath)
328+
public void SetDescAssetHandle(AssetHandle descAssetHandle, string descAssetPath)
322329
{
323-
DefiledAssetHandle = defiledAssetHandle;
324-
DefiledAssetPath = defiledAssetPath;
330+
DescAssetHandle = descAssetHandle;
331+
DescAssetPath = descAssetPath;
325332
}
326333

327334
/// <summary>
@@ -332,7 +339,7 @@ public void SetDefiledAssetHandle(AssetHandle defiledAssetHandle, string defiled
332339
/// </remarks>
333340
/// <value>描述文件句柄 / The definition asset handle</value>
334341
[UnityEngine.Scripting.Preserve]
335-
public AssetHandle DefiledAssetHandle { get; private set; }
342+
public AssetHandle DescAssetHandle { get; private set; }
336343

337344
/// <summary>
338345
/// 获取描述文件资源路径。
@@ -342,7 +349,7 @@ public void SetDefiledAssetHandle(AssetHandle defiledAssetHandle, string defiled
342349
/// </remarks>
343350
/// <value>描述文件路径 / The definition asset path</value>
344351
[UnityEngine.Scripting.Preserve]
345-
public string DefiledAssetPath { get; private set; }
352+
public string DescAssetPath { get; private set; }
346353

347354
/// <summary>
348355
/// 初始化 <see cref="UIPackageData"/> 类的新实例。
@@ -367,7 +374,7 @@ public UIPackageData(string packageName)
367374
public void Dispose()
368375
{
369376
ResourceAllAssetsHandle?.Dispose();
370-
DefiledAssetHandle?.Dispose();
377+
DescAssetHandle?.Dispose();
371378
}
372379
}
373380
}

0 commit comments

Comments
 (0)