66//------------------------------------------------------------
77
88using System ;
9+ using System . Reflection ;
910using FairyGUI ;
1011using GameFrameX . Asset . Runtime ;
1112using GameFrameX . Runtime ;
@@ -21,6 +22,7 @@ namespace GameFrameX.UI.FairyGUI.Runtime
2122 public class FairyGUIFormHelper : UIFormHelperBase
2223 {
2324 private AssetComponent m_AssetComponent = null ;
25+ private UIComponent m_UIComponent = null ;
2426
2527 /// <summary>
2628 /// 实例化界面。
@@ -39,7 +41,6 @@ public override object InstantiateUIForm(object uiFormAsset)
3941 /// 创建界面。
4042 /// </summary>
4143 /// <param name="uiFormInstance">界面实例。</param>
42- /// <param name="uiGroup">界面所属的界面组。</param>
4344 /// <param name="uiFormType">界面逻辑类型</param>
4445 /// <param name="userData">用户自定义数据。</param>
4546 /// <returns>界面。</returns>
@@ -67,6 +68,15 @@ public override IUIForm CreateUIForm(object uiFormInstance, Type uiFormType, obj
6768
6869 var uiGroup = uiForm . UIGroup ;
6970
71+ if ( uiGroup == null )
72+ {
73+ var attribute = uiFormType . GetCustomAttribute ( typeof ( OptionUIGroup ) ) ;
74+ if ( attribute is OptionUIGroup optionUIGroup )
75+ {
76+ uiGroup = m_UIComponent . GetUIGroup ( optionUIGroup . GroupName ) ;
77+ }
78+ }
79+
7080 if ( uiGroup == null )
7181 {
7282 Log . Error ( "UI group is invalid." ) ;
@@ -110,14 +120,21 @@ public override void ReleaseUIForm(object uiFormAsset, object uiFormInstance)
110120 }
111121 }
112122
113- private void Start ( )
123+ private void Awake ( )
114124 {
115125 m_AssetComponent = GameEntry . GetComponent < AssetComponent > ( ) ;
116126 if ( m_AssetComponent == null )
117127 {
118128 Log . Fatal ( "Asset component is invalid." ) ;
119129 return ;
120130 }
131+
132+ m_UIComponent = GameEntry . GetComponent < UIComponent > ( ) ;
133+ if ( m_UIComponent == null )
134+ {
135+ Log . Fatal ( "UI component is invalid." ) ;
136+ return ;
137+ }
121138 }
122139 }
123140}
0 commit comments