06 优化加载资源包读取路径

This commit is contained in:
2025-04-27 11:30:35 +08:00
parent ddcc3653d7
commit e8a8c3c1b8
3 changed files with 41 additions and 28 deletions

View File

@@ -9,8 +9,6 @@ namespace Stary.Evo.UIFarme
{ {
public interface IBasePanel : IController public interface IBasePanel : IController
{ {
/// <summary> /// <summary>
/// 绑定这个面板的实例 /// 绑定这个面板的实例
/// </summary> /// </summary>
@@ -50,7 +48,7 @@ namespace Stary.Evo.UIFarme
/// </summary> /// </summary>
/// <param name="type">ui信息</param> /// <param name="type">ui信息</param>
/// <returns></returns> /// <returns></returns>
Task<GameObject> CreatePanel(string panelName); Task<GameObject> CreatePanel(string panelName, string packageName);
/// <summary> /// <summary>
/// 销毁一个Ui对象 /// 销毁一个Ui对象
@@ -93,7 +91,6 @@ namespace Stary.Evo.UIFarme
protected BasePanel() protected BasePanel()
{ {
selectableDict = new Dictionary<string, Selectable>(); selectableDict = new Dictionary<string, Selectable>();
} }
@@ -148,7 +145,7 @@ namespace Stary.Evo.UIFarme
} }
public async Task<GameObject> CreatePanel(string panelName) public async Task<GameObject> CreatePanel(string panelName, string packageName)
{ {
if (panelParent == null) if (panelParent == null)
{ {
@@ -161,7 +158,24 @@ namespace Stary.Evo.UIFarme
return activePanel.gameObject; return activePanel.gameObject;
} }
var handle= YooAssets.LoadAssetAsync<GameObject>(panelName); AssetHandle handle = null;
if (packageName == null)
{
handle = YooAssets.LoadAssetAsync<GameObject>(panelName);
}
else
{
var package= YooAssets.TryGetPackage(packageName);
if (package == null)
{
handle = YooAssets.LoadAssetAsync<GameObject>(panelName);
}
else
{
handle = package.LoadAssetAsync<GameObject>(panelName);
}
}
await handle.Task; await handle.Task;
activePanel = GameObject.Instantiate(handle.AssetObject as GameObject, panelParent); activePanel = GameObject.Instantiate(handle.AssetObject as GameObject, panelParent);
@@ -204,6 +218,7 @@ namespace Stary.Evo.UIFarme
{ {
Debug.LogError($"{this.GetType()}---{name}在selectableDict不存在"); Debug.LogError($"{this.GetType()}---{name}在selectableDict不存在");
} }
return t as T; return t as T;
} }
@@ -212,6 +227,4 @@ namespace Stary.Evo.UIFarme
return PanelSystem.GetArchitecture(); return PanelSystem.GetArchitecture();
} }
} }
} }

View File

@@ -10,12 +10,12 @@ namespace Stary.Evo.UIFarme
/// <summary> /// <summary>
/// UI的入栈操作此操作会显示一个面板 /// UI的入栈操作此操作会显示一个面板
/// </summary> /// </summary>
Task PushQueue<T>(Transform parent) where T : IBasePanel, new(); Task PushQueue<T>(Transform parent,string packageName=null) where T : IBasePanel, new();
/// <summary> /// <summary>
/// UI的入栈操作此操作会显示一个面板 /// UI的入栈操作此操作会显示一个面板
/// </summary> /// </summary>
Task PushStack<T>(Transform parent) where T : IBasePanel, new(); Task PushStack<T>(Transform parent,string packageName=null) where T : IBasePanel, new();
/// <summary> /// <summary>
/// 执行面板的出栈操作此操作会执行面板的OnExit方法 /// 执行面板的出栈操作此操作会执行面板的OnExit方法
@@ -94,7 +94,7 @@ namespace Stary.Evo.UIFarme
} }
public async Task PushQueue<T>(Transform parent) where T : IBasePanel, new() public async Task PushQueue<T>(Transform parent,string packageName=null) where T : IBasePanel, new()
{ {
string panelName = typeof(T).Name; string panelName = typeof(T).Name;
@@ -104,7 +104,7 @@ namespace Stary.Evo.UIFarme
nextPanel = new T(); nextPanel = new T();
nextPanel.Initialize(this); nextPanel.Initialize(this);
nextPanel.SetPanelParent(parent); nextPanel.SetPanelParent(parent);
GameObject panelGo = await nextPanel.CreatePanel($"Prefabs_{panelName}"); GameObject panelGo = await nextPanel.CreatePanel($"Prefabs_{panelName}",packageName);
///生成面板后,进行初始化操作 ///生成面板后,进行初始化操作
nextPanel.Initialize(panelGo); nextPanel.Initialize(panelGo);
dicUI.Add(panelName, nextPanel); dicUI.Add(panelName, nextPanel);
@@ -127,7 +127,7 @@ namespace Stary.Evo.UIFarme
//TOOD //TOOD
} }
public async Task PushStack<T>(Transform parent) where T : IBasePanel, new() public async Task PushStack<T>(Transform parent,string packageName=null) where T : IBasePanel, new()
{ {
string panelName = typeof(T).Name; string panelName = typeof(T).Name;
@@ -137,7 +137,7 @@ namespace Stary.Evo.UIFarme
nextPanel = new T(); nextPanel = new T();
nextPanel.Initialize(this); nextPanel.Initialize(this);
nextPanel.SetPanelParent(parent); nextPanel.SetPanelParent(parent);
GameObject panelGo = await nextPanel.CreatePanel(panelName); GameObject panelGo = await nextPanel.CreatePanel(panelName,packageName);
///生成面板后,进行初始化操作 ///生成面板后,进行初始化操作
nextPanel.Initialize(panelGo); nextPanel.Initialize(panelGo);

View File

@@ -1,7 +1,7 @@
{ {
"name": "com.staryevo.uifarme", "name": "com.staryevo.uifarme",
"displayName": "06.UIFarme", "displayName": "06.UIFarme",
"version": "1.0.5", "version": "1.0.6",
"description": "UI模板框架工具", "description": "UI模板框架工具",
"unity": "2021.3", "unity": "2021.3",
"unityRelease": "30f1", "unityRelease": "30f1",