Skip to content

Commit 6fb66c5

Browse files
committed
fix(UI): 修复UI资源释放时未使用正确路径的问题
将ReleaseUIForm方法签名修改为接收uiFormAssetPath参数,并在释放资源时使用资源路径而非句柄,确保资源正确卸载。同时更新相关调用处传递正确的资源路径。
1 parent f134a90 commit 6fb66c5

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

Runtime/UGUIFormHelper.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,10 @@ public override IUIForm CreateUIForm(object uiFormInstance, Type uiFormType, obj
140140
/// <param name="uiFormAsset">要释放的界面资源。</param>
141141
/// <param name="uiFormInstance">要释放的界面实例。</param>
142142
/// <param name="assetHandle">资源句柄。</param>
143-
public override void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle)
143+
/// <param name="uiFormAssetPath">界面资源路径。</param>
144+
public override void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle, string uiFormAssetPath)
144145
{
145-
m_AssetComponent.UnloadAssetHandle(assetHandle);
146+
m_AssetComponent.UnloadAsset(uiFormAssetPath);
146147
Destroy((Object)uiFormInstance);
147148
}
148149

Runtime/UIManager.Open.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ private IUIForm InternalOpenUIForm(int serialId, string uiFormAssetName, Type ui
176176
}
177177
}
178178

179-
private IUIForm LoadAssetSuccessCallback(string uiFormAssetName, object uiFormAsset, float duration, object userData)
179+
private IUIForm LoadAssetSuccessCallback(string uiFormAssetPath, object uiFormAsset, float duration, object userData)
180180
{
181181
OpenUIFormInfo openUIFormInfo = (OpenUIFormInfo)userData;
182182
if (openUIFormInfo == null)
@@ -188,16 +188,16 @@ private IUIForm LoadAssetSuccessCallback(string uiFormAssetName, object uiFormAs
188188
{
189189
var form = GetUIForm(openUIFormInfo.SerialId);
190190
m_UIFormsToReleaseOnLoad.Remove(openUIFormInfo.SerialId);
191-
m_UIFormHelper.ReleaseUIForm(uiFormAsset, null, openUIFormInfo.AssetHandle);
191+
m_UIFormHelper.ReleaseUIForm(uiFormAsset, null, openUIFormInfo.AssetHandle, uiFormAssetPath);
192192
ReferencePool.Release(openUIFormInfo);
193193
return form;
194194
}
195195

196196
m_UIFormsBeingLoaded.Remove(openUIFormInfo.SerialId);
197-
var uiFormInstanceObject = UIFormInstanceObject.Create(uiFormAssetName, uiFormAsset, m_UIFormHelper.InstantiateUIForm(uiFormAsset), m_UIFormHelper, openUIFormInfo.AssetHandle);
197+
var uiFormInstanceObject = UIFormInstanceObject.Create(uiFormAssetPath, uiFormAsset, m_UIFormHelper.InstantiateUIForm(uiFormAsset), m_UIFormHelper, openUIFormInfo.AssetHandle);
198198
m_InstancePool.Register(uiFormInstanceObject, true);
199199

200-
var uiForm = InternalOpenUIForm(openUIFormInfo.SerialId, uiFormAssetName, openUIFormInfo.FormType, uiFormInstanceObject.Target, openUIFormInfo.PauseCoveredUIForm, true, duration, openUIFormInfo.UserData, openUIFormInfo.IsFullScreen);
200+
var uiForm = InternalOpenUIForm(openUIFormInfo.SerialId, uiFormAssetPath, openUIFormInfo.FormType, uiFormInstanceObject.Target, openUIFormInfo.PauseCoveredUIForm, true, duration, openUIFormInfo.UserData, openUIFormInfo.IsFullScreen);
201201
ReferencePool.Release(openUIFormInfo);
202202
return uiForm;
203203
}

0 commit comments

Comments
 (0)