using UnityEngine;
using YooAsset;
namespace HotUpdate.UI
{
///
/// UI Prefab 加载:编辑器 AssetDatabase;运行时优先 DefaultPackage 寻址。
///
public sealed class UiPrefabLoader
{
public const string PrefabFolder = "Assets/Bundles/UI/Prefab";
public GameObject Load(string prefabName)
{
if (string.IsNullOrEmpty(prefabName)) return null;
if (YooAssets.IsInitialized)
{
// DefaultPackage 或任意已初始化包
var packages = new[] { "DefaultPackage", "Art" };
foreach (var name in packages)
{
if (!YooAssets.TryGetPackage(name, out var pkg)) continue;
if (pkg.InitializeStatus != EOperationStatus.Succeeded) continue;
var handle = pkg.LoadAssetSync(prefabName);
if (handle.Status == EOperationStatus.Succeeded)
return handle.GetAssetObject();
}
}
#if UNITY_EDITOR
var path = $"{PrefabFolder}/{prefabName}.prefab";
return UnityEditor.AssetDatabase.LoadAssetAtPath(path);
#else
return null;
#endif
}
}
}