Skip to content

Commit 3cb3f03

Browse files
committed
feat(UI): 为UI系统添加资源路径和名称参数支持
- UIFormInstanceObject.Create 方法增加 uiFormAssetName 参数 - IUIForm.Init 方法增加 uiFormAssetPath 参数 - IUIFormHelper.ReleaseUIForm 方法增加 uiFormAssetName 参数 - OpenUIFormInfo 新增 AssetPath 和 AssetName 属性 - UIFormHelperBase.ReleaseUIForm 方法签名同步更新
1 parent ba86c8f commit 3cb3f03

6 files changed

Lines changed: 46 additions & 7 deletions

File tree

Runtime/BaseUIManager.UIFormInstanceObject.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,22 @@ public sealed class UIFormInstanceObject : ObjectBase
4343
{
4444
private object m_UIFormAsset = null;
4545
private string m_UIFormAssetPath = null;
46+
private string m_UIFormAssetName = null;
4647
private IUIFormHelper m_UIFormHelper = null;
4748
private object m_AssetHandle = null;
4849

49-
public static UIFormInstanceObject Create(string uiFormAssetPath, object uiFormAsset, object uiFormInstance, IUIFormHelper uiFormHelper, object assetHandle)
50+
/// <summary>
51+
/// 创建界面实例对象。
52+
/// </summary>
53+
/// <param name="uiFormAssetPath">界面资源路径。</param>
54+
/// <param name="uiFormAssetName">界面资源名称。</param>
55+
/// <param name="uiFormAsset">界面资源。</param>
56+
/// <param name="uiFormInstance">界面实例。</param>
57+
/// <param name="uiFormHelper">界面助手。</param>
58+
/// <param name="assetHandle">界面资源句柄。</param>
59+
/// <returns>界面实例对象。</returns>
60+
/// <exception cref="GameFrameworkException">界面资源或界面助手无效。</exception>
61+
public static UIFormInstanceObject Create(string uiFormAssetPath, string uiFormAssetName, object uiFormAsset, object uiFormInstance, IUIFormHelper uiFormHelper, object assetHandle)
5062
{
5163
if (uiFormAsset == null)
5264
{
@@ -62,6 +74,7 @@ public static UIFormInstanceObject Create(string uiFormAssetPath, object uiFormA
6274
uiFormInstanceObject.Initialize(uiFormAssetPath, uiFormInstance);
6375
uiFormInstanceObject.m_UIFormAsset = uiFormAsset;
6476
uiFormInstanceObject.m_UIFormAssetPath = uiFormAssetPath;
77+
uiFormInstanceObject.m_UIFormAssetName = uiFormAssetName;
6578
uiFormInstanceObject.m_UIFormHelper = uiFormHelper;
6679
uiFormInstanceObject.m_AssetHandle = assetHandle;
6780
return uiFormInstanceObject;
@@ -74,11 +87,12 @@ public override void Clear()
7487
m_UIFormHelper = null;
7588
m_AssetHandle = null;
7689
m_UIFormAssetPath = null;
90+
m_UIFormAssetName = null;
7791
}
7892

7993
protected override void Release(bool isShutdown)
8094
{
81-
m_UIFormHelper.ReleaseUIForm(m_UIFormAsset, Target, m_AssetHandle, m_UIFormAssetPath);
95+
m_UIFormHelper.ReleaseUIForm(m_UIFormAsset, Target, m_AssetHandle, m_UIFormAssetPath, m_UIFormAssetName);
8296
}
8397
}
8498
}

Runtime/UI/IUIForm.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ public interface IUIForm
152152
/// 初始化界面。
153153
/// </summary>
154154
/// <param name="serialId">界面序列编号。</param>
155+
/// <param name="uiFormAssetPath">界面资源路径。</param>
155156
/// <param name="uiFormAssetName">界面资源名称。</param>
156157
/// <param name="uiGroup">界面所属的界面组。</param>
157158
/// <param name="onInitAction">初始化界面前的委托。</param>
@@ -160,7 +161,7 @@ public interface IUIForm
160161
/// <param name="userData">用户自定义数据。</param>
161162
/// <param name="isFullScreen">是否全屏</param>
162163
/// <param name="recycleInterval">界面回收间隔,单位:秒</param>
163-
void Init(int serialId, string uiFormAssetName, IUIGroup uiGroup, Action<IUIForm> onInitAction, bool pauseCoveredUIForm, bool isNewInstance, object userData, int recycleInterval, bool isFullScreen = false);
164+
void Init(int serialId, string uiFormAssetPath, string uiFormAssetName, IUIGroup uiGroup, Action<IUIForm> onInitAction, bool pauseCoveredUIForm, bool isNewInstance, object userData, int recycleInterval, bool isFullScreen = false);
164165

165166
/// <summary>
166167
/// 界面初始化。

Runtime/UI/IUIFormHelper.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public interface IUIFormHelper
6161
/// <param name="uiFormInstance">要释放的界面实例。</param>
6262
/// <param name="assetHandle">界面资源句柄。</param>
6363
/// <param name="uiFormAssetPath">界面资源路径。</param>
64-
void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle, string uiFormAssetPath);
64+
/// <param name="uiFormAssetName">界面资源名称。</param>
65+
void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle, string uiFormAssetPath, string uiFormAssetName);
6566
}
6667
}

Runtime/UI/OpenUIFormInfo.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public sealed class OpenUIFormInfo : IReference
4545
private Type m_FormType;
4646
private object m_AssetHandle;
4747
private bool m_IsFullScreen = false;
48+
private string m_AssetPath = string.Empty;
49+
private string m_AssetName;
4850

4951
/// <summary>
5052
/// 获取界面是否全屏。
@@ -54,6 +56,22 @@ public bool IsFullScreen
5456
get { return m_IsFullScreen; }
5557
}
5658

59+
/// <summary>
60+
/// 获取界面资源路径。
61+
/// </summary>
62+
public string AssetPath
63+
{
64+
get { return m_AssetPath; }
65+
}
66+
67+
/// <summary>
68+
/// 获取界面资源名称。
69+
/// </summary>
70+
public string AssetName
71+
{
72+
get { return m_AssetName; }
73+
}
74+
5775
/// <summary>
5876
/// 获取界面类型。
5977
/// </summary>
@@ -112,12 +130,14 @@ public void SetAssetHandle(object assetHandle)
112130
/// <param name="userData">用户自定义数据。</param>
113131
/// <param name="isFullScreen">界面是否全屏。</param>
114132
/// <returns>创建的打开界面的信息。</returns>
115-
public static OpenUIFormInfo Create(int serialId, Type uiFormType, bool pauseCoveredUIForm, object userData, bool isFullScreen)
133+
public static OpenUIFormInfo Create(int serialId, string assetPath, string assetName, Type uiFormType, bool pauseCoveredUIForm, object userData, bool isFullScreen)
116134
{
117135
OpenUIFormInfo openUIFormInfo = ReferencePool.Acquire<OpenUIFormInfo>();
118136
openUIFormInfo.m_SerialId = serialId;
119137
openUIFormInfo.m_PauseCoveredUIForm = pauseCoveredUIForm;
120138
openUIFormInfo.m_UserData = userData;
139+
openUIFormInfo.m_AssetPath = assetPath;
140+
openUIFormInfo.m_AssetName = assetName;
121141
openUIFormInfo.m_FormType = uiFormType;
122142
openUIFormInfo.m_IsFullScreen = isFullScreen;
123143
return openUIFormInfo;

Runtime/UIForm.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ protected virtual void InitView()
366366
/// 初始化界面。
367367
/// </summary>
368368
/// <param name="serialId">界面序列编号。</param>
369+
/// <param name="uiFormAssetPath">界面资源路径。</param>
369370
/// <param name="uiFormAssetName">界面资源名称。</param>
370371
/// <param name="uiGroup">界面所处的界面组。</param>
371372
/// <param name="onInitAction">初始化界面前的委托。</param>
@@ -374,7 +375,7 @@ protected virtual void InitView()
374375
/// <param name="userData">用户自定义数据。</param>
375376
/// <param name="isFullScreen">是否全屏</param>
376377
/// <param name="recycleInterval"></param>
377-
public void Init(int serialId, string uiFormAssetName, IUIGroup uiGroup, Action<IUIForm> onInitAction, bool pauseCoveredUIForm, bool isNewInstance, object userData, int recycleInterval, bool isFullScreen = false)
378+
public void Init(int serialId, string uiFormAssetPath, string uiFormAssetName, IUIGroup uiGroup, Action<IUIForm> onInitAction, bool pauseCoveredUIForm, bool isNewInstance, object userData, int recycleInterval, bool isFullScreen = false)
378379
{
379380
RecycleInterval = recycleInterval;
380381
ReleaseStartTime = DateTime.MaxValue;
@@ -391,6 +392,7 @@ public void Init(int serialId, string uiFormAssetName, IUIGroup uiGroup, Action<
391392
return;
392393
}
393394

395+
m_AssetPath = uiFormAssetPath;
394396
m_UIFormAssetName = uiFormAssetName;
395397
m_FullName = GetType().FullName;
396398
m_DepthInUIGroup = 0;

Runtime/UIFormHelperBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public abstract class UIFormHelperBase : MonoBehaviour, IUIFormHelper
6363
/// <param name="uiFormInstance">要释放的界面实例。</param>
6464
/// <param name="assetHandle">资源句柄。</param>
6565
/// <param name="uiFormAssetPath">界面资源路径。</param>
66-
public abstract void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle, string uiFormAssetPath);
66+
/// <param name="uiFormAssetName">界面资源名称。</param>
67+
public abstract void ReleaseUIForm(object uiFormAsset, object uiFormInstance, object assetHandle, string uiFormAssetPath, string uiFormAssetName);
6768
}
6869
}

0 commit comments

Comments
 (0)