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 } } }