Skip to content

Commit 924cc0e

Browse files
committed
[增加]1. 增加UGUI的新接口适配
1 parent 92811a2 commit 924cc0e

File tree

1 file changed

+56
-58
lines changed

1 file changed

+56
-58
lines changed

Runtime/UIManager.Open.cs

Lines changed: 56 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public event EventHandler<OpenUIFormDependencyAssetEventArgs> OpenUIFormDependen
6767
add { m_OpenUIFormDependencyAssetEventHandler += value; }
6868
remove { m_OpenUIFormDependencyAssetEventHandler -= value; }
6969
}*/
70-
70+
7171
/// <summary>
7272
/// 打开界面。
7373
/// </summary>
@@ -96,76 +96,74 @@ private async Task<IUIForm> InnerOpenUIFormAsync(string uiFormAssetPath, Type ui
9696
int serialId = ++m_Serial;
9797
var uiFormAssetName = uiFormType.Name;
9898
UIFormInstanceObject uiFormInstanceObject = m_InstancePool.Spawn(uiFormAssetName);
99-
if (uiFormInstanceObject == null)
99+
if (uiFormInstanceObject != null)
100100
{
101-
m_UIFormsBeingLoaded.Add(serialId, uiFormAssetName);
102-
string assetPath = PathHelper.Combine(uiFormAssetPath, uiFormAssetName);
101+
// 如果对象池存在
102+
return InternalOpenUIForm(serialId, uiFormAssetName, uiFormType, uiFormInstanceObject.Target, pauseCoveredUIForm, false, 0f, userData, isFullScreen);
103+
}
103104

104-
var lastIndexOfStart = uiFormAssetPath.LastIndexOf("/", StringComparison.OrdinalIgnoreCase);
105-
var packageName = uiFormAssetPath.Substring(lastIndexOfStart + 1);
106-
var has = FairyGuiPackage.Has(packageName);
105+
m_UIFormsBeingLoaded.Add(serialId, uiFormAssetName);
106+
string assetPath = PathHelper.Combine(uiFormAssetPath, uiFormAssetName);
107107

108-
OpenUIFormInfoData openUIFormInfoData = OpenUIFormInfoData.Create(serialId, packageName, uiFormAssetName, uiFormType, pauseCoveredUIForm, userData);
108+
var lastIndexOfStart = uiFormAssetPath.LastIndexOf("/", StringComparison.OrdinalIgnoreCase);
109+
var packageName = uiFormAssetPath.Substring(lastIndexOfStart + 1);
110+
// 检查UI包是否已经加载过
111+
var hasUIPackage = FairyGuiPackage.Has(packageName);
109112

110-
OpenUIFormInfo openUIFormInfo = OpenUIFormInfo.Create(serialId, uiFormType, pauseCoveredUIForm, userData, isFullScreen);
111-
if (assetPath.IndexOf(Utility.Asset.Path.BundlesDirectoryName, StringComparison.OrdinalIgnoreCase) >= 0)
113+
OpenUIFormInfoData openUIFormInfoData = OpenUIFormInfoData.Create(serialId, packageName, uiFormAssetName, uiFormType, pauseCoveredUIForm, userData);
114+
OpenUIFormInfo openUIFormInfo = OpenUIFormInfo.Create(serialId, uiFormType, pauseCoveredUIForm, userData, isFullScreen);
115+
if (assetPath.IndexOf(Utility.Asset.Path.BundlesDirectoryName, StringComparison.OrdinalIgnoreCase) < 0)
116+
{
117+
// 从Resources 中加载
118+
if (!hasUIPackage)
112119
{
113-
if (!has)
114-
{
115-
if (packageName == uiFormAssetName)
116-
{
117-
await FairyGuiPackage.AddPackageAsync(assetPath);
118-
}
119-
else
120-
{
121-
string newPackagePath = PathHelper.Combine(uiFormAssetPath, packageName);
122-
await FairyGuiPackage.AddPackageAsync(newPackagePath);
123-
}
124-
125-
string newAssetPackagePath = assetPath;
126-
if (packageName != uiFormAssetName)
127-
{
128-
newAssetPackagePath = PathHelper.Combine(uiFormAssetPath, packageName);
129-
}
130-
131-
newAssetPackagePath += "_fui";
132-
// 从包中加载
133-
var assetHandle = await m_AssetManager.LoadAssetAsync<UnityEngine.Object>(newAssetPackagePath);
134-
135-
if (assetHandle.IsSucceed)
136-
{
137-
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, assetHandle.Progress, openUIFormInfo);
138-
}
139-
else
140-
{
141-
return LoadAssetFailureCallback(uiFormAssetName, assetHandle.LastError, openUIFormInfo);
142-
}
143-
}
144-
else
145-
{
146-
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, 1, openUIFormInfo);
147-
}
120+
FairyGuiPackage.AddPackageSync(assetPath);
148121
}
149-
else
150-
{
151-
if (!has)
152-
{
153-
FairyGuiPackage.AddPackageSync(assetPath);
154-
}
155122

156-
// 从Resources 中加载
157-
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, 0, openUIFormInfo);
158-
}
123+
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, 0, openUIFormInfo);
124+
}
125+
126+
// 检查UI包是否已经加载过
127+
if (hasUIPackage)
128+
{
129+
// 如果UI 包存在则创建界面
130+
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, 1, openUIFormInfo);
131+
}
132+
133+
if (packageName == uiFormAssetName)
134+
{
135+
// 如果UI资源名字和包名一致则直接加载
136+
await FairyGuiPackage.AddPackageAsync(assetPath);
159137
}
160138
else
161139
{
162-
return InternalOpenUIForm(serialId, uiFormAssetName, uiFormType, uiFormInstanceObject.Target, pauseCoveredUIForm, false, 0f, userData, isFullScreen);
140+
// 不一致则重新拼接路径
141+
string newPackagePath = PathHelper.Combine(uiFormAssetPath, packageName);
142+
await FairyGuiPackage.AddPackageAsync(newPackagePath);
163143
}
144+
145+
string newAssetPackagePath = assetPath;
146+
if (packageName != uiFormAssetName)
147+
{
148+
newAssetPackagePath = PathHelper.Combine(uiFormAssetPath, packageName);
149+
}
150+
151+
newAssetPackagePath += "_fui";
152+
// 从包中加载
153+
var assetHandle = await m_AssetManager.LoadAssetAsync<UnityEngine.Object>(newAssetPackagePath);
154+
155+
if (assetHandle.IsSucceed)
156+
{
157+
// 加载成功
158+
return LoadAssetSuccessCallback(uiFormAssetName, openUIFormInfoData, assetHandle.Progress, openUIFormInfo);
159+
}
160+
161+
// UI包不存在
162+
return LoadAssetFailureCallback(uiFormAssetName, assetHandle.LastError, openUIFormInfo);
164163
}
165164

166165
private IUIForm InternalOpenUIForm(int serialId, string uiFormAssetName, Type uiFormType, object uiFormInstance, bool pauseCoveredUIForm, bool isNewInstance, float duration, object userData, bool isFullScreen)
167166
{
168-
IUIGroup uiGroup = null;
169167
try
170168
{
171169
IUIForm uiForm = m_UIFormHelper.CreateUIForm(uiFormInstance, uiFormType, userData);
@@ -174,8 +172,8 @@ private IUIForm InternalOpenUIForm(int serialId, string uiFormAssetName, Type ui
174172
throw new GameFrameworkException("Can not create UI form in UI form helper.");
175173
}
176174

177-
uiGroup = uiForm.UIGroup;
178-
uiForm.Init(serialId, uiFormAssetName, uiForm.UIGroup, OnInitAction, pauseCoveredUIForm, isNewInstance, userData, isFullScreen);
175+
var uiGroup = uiForm.UIGroup;
176+
uiForm.Init(serialId, uiFormAssetName, uiGroup, OnInitAction, pauseCoveredUIForm, isNewInstance, userData, isFullScreen);
179177

180178
void OnInitAction(IUIForm obj)
181179
{

0 commit comments

Comments
 (0)