Compare commits
No commits in common. "de6295476535d0f9d075b5b5e6f1592514fba229" and "b6eaa0c3d0672d521f7c1758c0983b5f3d96c0d2" have entirely different histories.
de62954765
...
b6eaa0c3d0
@ -32,7 +32,6 @@ namespace AlicizaX.Resource.Editor
|
|||||||
private SerializedProperty _packageName = null;
|
private SerializedProperty _packageName = null;
|
||||||
private SerializedProperty _decryptionServices = null;
|
private SerializedProperty _decryptionServices = null;
|
||||||
private SerializedProperty _playMode = null;
|
private SerializedProperty _playMode = null;
|
||||||
private SerializedProperty _autoUnloadBundleWhenUnused = null;
|
|
||||||
private int _packageNameIndex = 0;
|
private int _packageNameIndex = 0;
|
||||||
private string[] _packageNames;
|
private string[] _packageNames;
|
||||||
|
|
||||||
@ -102,7 +101,6 @@ namespace AlicizaX.Resource.Editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorGUILayout.PropertyField(_autoUnloadBundleWhenUnused);
|
|
||||||
EditorGUILayout.PropertyField(_useSystemUnloadUnusedAssets);
|
EditorGUILayout.PropertyField(_useSystemUnloadUnusedAssets);
|
||||||
|
|
||||||
float minUnloadUnusedAssetsInterval =
|
float minUnloadUnusedAssetsInterval =
|
||||||
@ -247,9 +245,8 @@ namespace AlicizaX.Resource.Editor
|
|||||||
_downloadingMaxNum = serializedObject.FindProperty("downloadingMaxNum");
|
_downloadingMaxNum = serializedObject.FindProperty("downloadingMaxNum");
|
||||||
_failedTryAgain = serializedObject.FindProperty("failedTryAgain");
|
_failedTryAgain = serializedObject.FindProperty("failedTryAgain");
|
||||||
_packageName = serializedObject.FindProperty("packageName");
|
_packageName = serializedObject.FindProperty("packageName");
|
||||||
_decryptionServices = serializedObject.FindProperty("decryptionServices");
|
_decryptionServices = serializedObject.FindProperty("_decryptionServices");
|
||||||
_playMode = serializedObject.FindProperty("_playMode");
|
_playMode = serializedObject.FindProperty("_playMode");
|
||||||
_autoUnloadBundleWhenUnused = serializedObject.FindProperty("autoUnloadBundleWhenUnused");
|
|
||||||
RefreshDecryptionServices();
|
RefreshDecryptionServices();
|
||||||
RefreshTypeNames();
|
RefreshTypeNames();
|
||||||
_playModeIndex = EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
_playModeIndex = EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
||||||
|
|||||||
@ -10,7 +10,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 资源管理器接口。
|
/// 资源管理器接口。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IResourceModule : IModule
|
public interface IResourceModule:IModule
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取当前资源适用的游戏版本号。
|
/// 获取当前资源适用的游戏版本号。
|
||||||
@ -29,10 +29,6 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
|
|
||||||
string DecryptionServices { get; set; }
|
string DecryptionServices { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 自动释放资源引用计数为0的资源包
|
|
||||||
/// </summary>
|
|
||||||
bool AutoUnloadBundleWhenUnused { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同时下载的最大数目。
|
/// 同时下载的最大数目。
|
||||||
@ -50,7 +46,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
void Initialize();
|
void Initialize();
|
||||||
|
|
||||||
|
|
||||||
UniTask<bool> InitPackageAsync(string packageName = "", string hostServerURL = "", string fallbackHostServerURL = "");
|
UniTask<bool> InitPackageAsync(string packageName="", string hostServerURL = "", string fallbackHostServerURL = "");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 默认资源包名称。
|
/// 默认资源包名称。
|
||||||
|
|||||||
@ -34,13 +34,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
|
|
||||||
[SerializeField] private bool useSystemUnloadUnusedAssets = true;
|
[SerializeField] private bool useSystemUnloadUnusedAssets = true;
|
||||||
|
|
||||||
[SerializeField] private string decryptionServices = "";
|
[SerializeField] private string _decryptionServices = "";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 自动释放资源引用计数为0的资源包
|
|
||||||
/// </summary>
|
|
||||||
[SerializeField] public bool autoUnloadBundleWhenUnused = false;
|
|
||||||
|
|
||||||
[SerializeField] private EPlayMode _playMode = EPlayMode.EditorSimulateMode;
|
[SerializeField] private EPlayMode _playMode = EPlayMode.EditorSimulateMode;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -200,8 +194,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
_playMode = (EPlayMode)UnityEditor.EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
_playMode = (EPlayMode)UnityEditor.EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
||||||
#endif
|
#endif
|
||||||
_resourceModule.DefaultPackageName = PackageName;
|
_resourceModule.DefaultPackageName = PackageName;
|
||||||
_resourceModule.DecryptionServices = decryptionServices;
|
_resourceModule.DecryptionServices = _decryptionServices;
|
||||||
_resourceModule.AutoUnloadBundleWhenUnused = autoUnloadBundleWhenUnused;
|
|
||||||
_resourceModule.PlayMode = _playMode;
|
_resourceModule.PlayMode = _playMode;
|
||||||
_resourceModule.Milliseconds = milliseconds;
|
_resourceModule.Milliseconds = milliseconds;
|
||||||
_resourceModule.DownloadingMaxNum = DownloadingMaxNum;
|
_resourceModule.DownloadingMaxNum = DownloadingMaxNum;
|
||||||
|
|||||||
@ -13,39 +13,33 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
private InitializationOperation CreateInitializationOperationHandler(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, string decryptionServicesName)
|
private InitializationOperation CreateInitializationOperationHandler(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, string decryptionServicesName)
|
||||||
{
|
{
|
||||||
IDecryptionServices decryptionServices = CreateDecryptionServices(decryptionServicesName);
|
IDecryptionServices decryptionServices = CreateDecryptionServices(decryptionServicesName);
|
||||||
InitializeParameters initializeParameters = null;
|
|
||||||
switch (PlayMode)
|
switch (PlayMode)
|
||||||
{
|
{
|
||||||
case EPlayMode.EditorSimulateMode:
|
case EPlayMode.EditorSimulateMode:
|
||||||
{
|
{
|
||||||
initializeParameters = InitializeYooAssetEditorSimulateMode(DefaultPackageName);
|
// 编辑器下的模拟模式
|
||||||
break;
|
return InitializeYooAssetEditorSimulateMode(resourcePackage, DefaultPackageName);
|
||||||
}
|
}
|
||||||
case EPlayMode.OfflinePlayMode:
|
case EPlayMode.OfflinePlayMode:
|
||||||
{
|
{
|
||||||
// 单机运行模式
|
// 单机运行模式
|
||||||
initializeParameters = InitializeYooAssetOfflinePlayMode(decryptionServices);
|
return InitializeYooAssetOfflinePlayMode(resourcePackage, decryptionServices);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case EPlayMode.HostPlayMode:
|
case EPlayMode.HostPlayMode:
|
||||||
{
|
{
|
||||||
// 联机运行模式
|
// 联机运行模式
|
||||||
initializeParameters = InitializeYooAssetHostPlayMode(hostServerURL, fallbackHostServerURL, decryptionServices);
|
return InitializeYooAssetHostPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL, decryptionServices);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case EPlayMode.WebPlayMode:
|
case EPlayMode.WebPlayMode:
|
||||||
{
|
{
|
||||||
// WebGL运行模式
|
// WebGL运行模式
|
||||||
initializeParameters = InitializeYooAssetWebPlayMode(hostServerURL, fallbackHostServerURL);
|
return InitializeYooAssetWebPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
|
||||||
break;
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (initializeParameters == null) return null;
|
|
||||||
|
|
||||||
initializeParameters.AutoUnloadBundleWhenUnused = AutoUnloadBundleWhenUnused;
|
|
||||||
return resourcePackage.InitializeAsync(initializeParameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IDecryptionServices CreateDecryptionServices(string decryptionServicesName)
|
private IDecryptionServices CreateDecryptionServices(string decryptionServicesName)
|
||||||
@ -60,30 +54,32 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
return decryptionServices;
|
return decryptionServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializeParameters InitializeYooAssetEditorSimulateMode(string packageName)
|
private InitializationOperation InitializeYooAssetEditorSimulateMode(ResourcePackage resourcePackage, string packageName)
|
||||||
{
|
{
|
||||||
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
||||||
var packageRoot = buildResult.PackageRootDirectory;
|
var packageRoot = buildResult.PackageRootDirectory;
|
||||||
var initializeParameters = new EditorSimulateModeParameters();
|
var createParameters = new EditorSimulateModeParameters();
|
||||||
initializeParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
||||||
return initializeParameters;
|
// createParameters.EditorFileSystemParameters.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES,new FileOffsetEncryption());
|
||||||
|
return resourcePackage.InitializeAsync(createParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializeParameters InitializeYooAssetOfflinePlayMode(IDecryptionServices decryptionServices = null)
|
private InitializationOperation InitializeYooAssetOfflinePlayMode(ResourcePackage resourcePackage, IDecryptionServices decryptionServices = null)
|
||||||
{
|
{
|
||||||
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
||||||
var initializeParameters = new OfflinePlayModeParameters();
|
var initParameters = new OfflinePlayModeParameters();
|
||||||
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||||
return initializeParameters;
|
return resourcePackage.InitializeAsync(initParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializeParameters InitializeYooAssetWebPlayMode(string hostServerURL, string fallbackHostServerURL)
|
private InitializationOperation InitializeYooAssetWebPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL)
|
||||||
{
|
{
|
||||||
var initializeParameters = new WebPlayModeParameters();
|
var initParameters = new WebPlayModeParameters();
|
||||||
FileSystemParameters webRemoteFileSystemParams = null;
|
FileSystemParameters webRemoteFileSystemParams = null;
|
||||||
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
||||||
var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
|
var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
|
||||||
#if UNITY_WEBGL
|
#if UNITY_WEBGL
|
||||||
|
|
||||||
#if WEIXINMINIGAME
|
#if WEIXINMINIGAME
|
||||||
|
|
||||||
|
|
||||||
@ -95,20 +91,20 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
initializeParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
||||||
initializeParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
||||||
return initializeParameters;
|
return resourcePackage.InitializeAsync(initParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializeParameters InitializeYooAssetHostPlayMode(string hostServerURL, string fallbackHostServerURL, IDecryptionServices decryptionServices = null)
|
private InitializationOperation InitializeYooAssetHostPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, IDecryptionServices decryptionServices = null)
|
||||||
{
|
{
|
||||||
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
||||||
var cacheFileSystem = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
|
var cacheFileSystem = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
|
||||||
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
||||||
var initializeParameters = new HostPlayModeParameters();
|
var initParameters = new HostPlayModeParameters();
|
||||||
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||||
initializeParameters.CacheFileSystemParameters = cacheFileSystem;
|
initParameters.CacheFileSystemParameters = cacheFileSystem;
|
||||||
return initializeParameters;
|
return resourcePackage.InitializeAsync(initParameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,11 +27,6 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
|
|
||||||
public string DecryptionServices { get; set; }
|
public string DecryptionServices { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 自动释放资源引用计数为0的资源包
|
|
||||||
/// </summary>
|
|
||||||
public bool AutoUnloadBundleWhenUnused { get; set; } = false;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
|
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -812,7 +807,6 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
{
|
{
|
||||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -914,7 +908,6 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
{
|
{
|
||||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,27 +1,25 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using AlicizaX;
|
using AlicizaX;
|
||||||
using AlicizaX.ObjectPool;
|
|
||||||
|
|
||||||
namespace AlicizaX.UI.Runtime
|
namespace AlicizaX.UI.Runtime
|
||||||
{
|
{
|
||||||
|
internal static class MetaTypeCache<T> where T : UIBase
|
||||||
|
{
|
||||||
|
public static readonly UIMetadata Metadata;
|
||||||
|
|
||||||
|
static MetaTypeCache()
|
||||||
|
{
|
||||||
|
var type = typeof(T);
|
||||||
|
Metadata = UIMetadataFactory.GetMetadata(type.TypeHandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static class UIMetadataFactory
|
internal static class UIMetadataFactory
|
||||||
{
|
{
|
||||||
private static readonly Dictionary<RuntimeTypeHandle, UIMetadata> UIWindowMetadata = new();
|
private static readonly Dictionary<RuntimeTypeHandle, UIMetadata> UIWindowMetadata = new();
|
||||||
|
|
||||||
private static readonly IObjectPool<UIMetadataObject> m_UIMetadataPool;
|
internal static UIMetadata GetMetadata(RuntimeTypeHandle handle)
|
||||||
|
|
||||||
static UIMetadataFactory()
|
|
||||||
{
|
|
||||||
m_UIMetadataPool = ModuleSystem.GetModule<IObjectPoolModule>().CreateSingleSpawnObjectPool<UIMetadataObject>("UI Metadata Pool", 60, 16, 60f, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static UIMetadata GetWindowMetadata<T>()
|
|
||||||
{
|
|
||||||
return GetWindowMetadata(typeof(T).TypeHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static UIMetadata GetWindowMetadata(RuntimeTypeHandle handle)
|
|
||||||
{
|
{
|
||||||
if (!UIWindowMetadata.TryGetValue(handle, out var meta))
|
if (!UIWindowMetadata.TryGetValue(handle, out var meta))
|
||||||
{
|
{
|
||||||
@ -31,51 +29,5 @@ namespace AlicizaX.UI.Runtime
|
|||||||
|
|
||||||
return meta;
|
return meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static UIMetadata GetWidgetMetadata<T>()
|
|
||||||
{
|
|
||||||
return GetWidgetMetadata(typeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static UIMetadata GetWidgetMetadata(RuntimeTypeHandle handle)
|
|
||||||
{
|
|
||||||
return GetFromPool(Type.GetTypeFromHandle(handle));
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static UIMetadata GetWidgetMetadata(Type type)
|
|
||||||
{
|
|
||||||
return GetFromPool(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static UIMetadata GetFromPool(Type type)
|
|
||||||
{
|
|
||||||
if (type == null) return null;
|
|
||||||
|
|
||||||
|
|
||||||
string typeHandleKey = type.FullName;
|
|
||||||
|
|
||||||
|
|
||||||
UIMetadataObject metadataObj = m_UIMetadataPool.Spawn(typeHandleKey);
|
|
||||||
|
|
||||||
if (metadataObj != null && metadataObj.Target != null)
|
|
||||||
{
|
|
||||||
return (UIMetadata)metadataObj.Target;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UIMetadata newMetadata = new UIMetadata(type);
|
|
||||||
UIMetadataObject newMetadataObj = UIMetadataObject.Create(newMetadata, typeHandleKey);
|
|
||||||
|
|
||||||
m_UIMetadataPool.Register(newMetadataObj, true);
|
|
||||||
|
|
||||||
return newMetadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
internal static void ReturnToPool(UIMetadata metadata)
|
|
||||||
{
|
|
||||||
if (metadata == null) return;
|
|
||||||
m_UIMetadataPool.Unspawn(metadata);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,23 +0,0 @@
|
|||||||
using AlicizaX.ObjectPool;
|
|
||||||
|
|
||||||
namespace AlicizaX.UI.Runtime
|
|
||||||
{
|
|
||||||
internal class UIMetadataObject : ObjectBase
|
|
||||||
{
|
|
||||||
public static UIMetadataObject Create(UIMetadata target, string name)
|
|
||||||
{
|
|
||||||
UIMetadataObject obj = MemoryPool.Acquire<UIMetadataObject>();
|
|
||||||
obj.Initialize(name, target);
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected internal override void Release(bool isShutdown)
|
|
||||||
{
|
|
||||||
UIMetadata metadata = (UIMetadata)Target;
|
|
||||||
if (metadata != null)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2212a30398cd4ca28f31f575c65cedd0
|
|
||||||
timeCreated: 1763367776
|
|
||||||
@ -27,7 +27,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
CreateMetaUI(metaInfo);
|
CreateMetaUI(metaInfo);
|
||||||
await UIHolderFactory.CreateUIResourceAsync(metaInfo, UICacheLayer);
|
await UIHolderFactory.CreateUIResourceAsync(metaInfo, UICacheLayer);
|
||||||
FinalizeShow(metaInfo, userDatas);
|
FinalizeShow(metaInfo, userDatas);
|
||||||
UpdateVisualState(metaInfo).Forget();
|
await UpdateVisualState(metaInfo);
|
||||||
return metaInfo.View;
|
return metaInfo.View;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,7 +43,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
{
|
{
|
||||||
if (UIMetaRegistry.TryGet(type, out var metaRegistry))
|
if (UIMetaRegistry.TryGet(type, out var metaRegistry))
|
||||||
{
|
{
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWindowMetadata(metaRegistry.RuntimeTypeHandle);
|
UIMetadata metadata = UIMetadataFactory.GetMetadata(metaRegistry.RuntimeTypeHandle);
|
||||||
return ShowUI(metadata, userDatas);
|
return ShowUI(metadata, userDatas);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,23 +52,23 @@ namespace AlicizaX.UI.Runtime
|
|||||||
|
|
||||||
public T ShowUISync<T>(params object[] userDatas) where T : UIBase
|
public T ShowUISync<T>(params object[] userDatas) where T : UIBase
|
||||||
{
|
{
|
||||||
return (T)ShowUIImplSync(UIMetadataFactory.GetWindowMetadata<T>(), userDatas);
|
return (T)ShowUIImplSync(MetaTypeCache<T>.Metadata, userDatas);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async UniTask<T> ShowUI<T>(params System.Object[] userDatas) where T : UIBase
|
public async UniTask<T> ShowUI<T>(params System.Object[] userDatas) where T : UIBase
|
||||||
{
|
{
|
||||||
return (T)await ShowUIAsync(UIMetadataFactory.GetWindowMetadata<T>(), userDatas);
|
return (T)await ShowUIAsync(MetaTypeCache<T>.Metadata, userDatas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void CloseUI<T>(bool force = false) where T : UIBase
|
public void CloseUI<T>(bool force = false) where T : UIBase
|
||||||
{
|
{
|
||||||
CloseUIImpl(UIMetadataFactory.GetWindowMetadata<T>(), force).Forget();
|
CloseUIImpl(MetaTypeCache<T>.Metadata, force).Forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
public T GetUI<T>() where T : UIBase
|
public T GetUI<T>() where T : UIBase
|
||||||
{
|
{
|
||||||
return (T)GetUIImpl(UIMetadataFactory.GetWindowMetadata<T>());
|
return (T)GetUIImpl(MetaTypeCache<T>.Metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
|
|
||||||
public void CloseUI(RuntimeTypeHandle handle, bool force = false)
|
public void CloseUI(RuntimeTypeHandle handle, bool force = false)
|
||||||
{
|
{
|
||||||
var metadata = UIMetadataFactory.GetWindowMetadata(handle);
|
var metadata = UIMetadataFactory.GetMetadata(handle);
|
||||||
if (metadata.State != UIState.Uninitialized && metadata.State != UIState.Destroying)
|
if (metadata.State != UIState.Uninitialized && metadata.State != UIState.Destroying)
|
||||||
{
|
{
|
||||||
CloseUIImpl(metadata, force).Forget();
|
CloseUIImpl(metadata, force).Forget();
|
||||||
|
|||||||
@ -84,19 +84,19 @@ namespace AlicizaX.UI.Runtime
|
|||||||
protected async UniTask<UIBase> CreateWidgetAsync(string typeName, Transform parent, bool visible = true)
|
protected async UniTask<UIBase> CreateWidgetAsync(string typeName, Transform parent, bool visible = true)
|
||||||
{
|
{
|
||||||
UIMetaRegistry.TryGet(typeName, out var metaRegistry);
|
UIMetaRegistry.TryGet(typeName, out var metaRegistry);
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata(metaRegistry.RuntimeTypeHandle);
|
UIMetadata metadata = UIMetadataFactory.GetMetadata(metaRegistry.RuntimeTypeHandle);
|
||||||
return await CreateWidgetUIAsync(metadata, parent, visible);
|
return await CreateWidgetUIAsync(metadata, parent, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async UniTask<T> CreateWidgetAsync<T>(Transform parent, bool visible = true) where T : UIBase
|
protected async UniTask<T> CreateWidgetAsync<T>(Transform parent, bool visible = true) where T : UIBase
|
||||||
{
|
{
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata<T>();
|
UIMetadata metadata = MetaTypeCache<T>.Metadata;
|
||||||
return (T)await CreateWidgetUIAsync(metadata, parent, visible);
|
return (T)await CreateWidgetUIAsync(metadata, parent, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async UniTask<T> CreateWidgetAsync<T>(UIHolderObjectBase holder) where T : UIBase
|
protected async UniTask<T> CreateWidgetAsync<T>(UIHolderObjectBase holder) where T : UIBase
|
||||||
{
|
{
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata<T>();
|
UIMetadata metadata = MetaTypeCache<T>.Metadata;
|
||||||
metadata.CreateUI();
|
metadata.CreateUI();
|
||||||
UIBase widget = (UIBase)metadata.View;
|
UIBase widget = (UIBase)metadata.View;
|
||||||
widget.BindUIHolder(holder, this);
|
widget.BindUIHolder(holder, this);
|
||||||
@ -112,19 +112,19 @@ namespace AlicizaX.UI.Runtime
|
|||||||
protected UIBase CreateWidgetSync(string typeName, Transform parent, bool visible = true)
|
protected UIBase CreateWidgetSync(string typeName, Transform parent, bool visible = true)
|
||||||
{
|
{
|
||||||
UIMetaRegistry.TryGet(typeName, out var metaRegistry);
|
UIMetaRegistry.TryGet(typeName, out var metaRegistry);
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata(metaRegistry.RuntimeTypeHandle);
|
UIMetadata metadata = UIMetadataFactory.GetMetadata(metaRegistry.RuntimeTypeHandle);
|
||||||
return CreateWidgetUISync(metadata, parent, visible);
|
return CreateWidgetUISync(metadata, parent, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected T CreateWidgetSync<T>(Transform parent, bool visible = true) where T : UIBase
|
protected T CreateWidgetSync<T>(Transform parent, bool visible = true) where T : UIBase
|
||||||
{
|
{
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata<T>();
|
UIMetadata metadata = MetaTypeCache<T>.Metadata;
|
||||||
return (T)CreateWidgetUISync(metadata, parent, visible);
|
return (T)CreateWidgetUISync(metadata, parent, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected T CreateWidgetSync<T>(UIHolderObjectBase holder) where T : UIBase
|
protected T CreateWidgetSync<T>(UIHolderObjectBase holder) where T : UIBase
|
||||||
{
|
{
|
||||||
UIMetadata metadata = UIMetadataFactory.GetWidgetMetadata<T>();
|
UIMetadata metadata = MetaTypeCache<T>.Metadata;
|
||||||
metadata.CreateUI();
|
metadata.CreateUI();
|
||||||
UIBase widget = (UIBase)metadata.View;
|
UIBase widget = (UIBase)metadata.View;
|
||||||
widget.BindUIHolder(holder, this);
|
widget.BindUIHolder(holder, this);
|
||||||
@ -154,7 +154,6 @@ namespace AlicizaX.UI.Runtime
|
|||||||
{
|
{
|
||||||
Log.Warning("Already has widget:{0}", meta.View);
|
Log.Warning("Already has widget:{0}", meta.View);
|
||||||
meta.Dispose();
|
meta.Dispose();
|
||||||
UIMetadataFactory.ReturnToPool(meta);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +166,6 @@ namespace AlicizaX.UI.Runtime
|
|||||||
{
|
{
|
||||||
await widget.InternalClose();
|
await widget.InternalClose();
|
||||||
meta.Dispose();
|
meta.Dispose();
|
||||||
UIMetadataFactory.ReturnToPool(meta);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
// 初始化方法(泛型版本)
|
// 初始化方法(泛型版本)
|
||||||
protected void InitTabVirtuallyView<TTab>(Transform parent = null) where TTab : UIWidget
|
protected void InitTabVirtuallyView<TTab>(Transform parent = null) where TTab : UIWidget
|
||||||
{
|
{
|
||||||
var metadata = UIMetadataFactory.GetWindowMetadata<TTab>();
|
var metadata = MetaTypeCache<TTab>.Metadata;
|
||||||
CacheTabMetadata(metadata, parent);
|
CacheTabMetadata(metadata, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
{
|
{
|
||||||
if (UIMetaRegistry.TryGet(typeName, out var metaRegistry))
|
if (UIMetaRegistry.TryGet(typeName, out var metaRegistry))
|
||||||
{
|
{
|
||||||
var metadata = UIMetadataFactory.GetWindowMetadata(metaRegistry.RuntimeTypeHandle);
|
var metadata = UIMetadataFactory.GetMetadata(metaRegistry.RuntimeTypeHandle);
|
||||||
CacheTabMetadata(metadata, parent);
|
CacheTabMetadata(metadata, parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,7 +102,7 @@ namespace AlicizaX.UI.Runtime
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var metadata = UIMetadataFactory.GetWindowMetadata(typeHandle);
|
var metadata = UIMetadataFactory.GetMetadata(typeHandle);
|
||||||
var parent = _tabCache[typeHandle];
|
var parent = _tabCache[typeHandle];
|
||||||
|
|
||||||
var widget = await CreateWidgetUIAsync(metadata, parent, false);
|
var widget = await CreateWidgetUIAsync(metadata, parent, false);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user