Resource增加自动释放
This commit is contained in:
parent
b6eaa0c3d0
commit
f8f2ea0201
@ -32,6 +32,7 @@ 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;
|
||||||
|
|
||||||
@ -101,6 +102,7 @@ namespace AlicizaX.Resource.Editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(_autoUnloadBundleWhenUnused);
|
||||||
EditorGUILayout.PropertyField(_useSystemUnloadUnusedAssets);
|
EditorGUILayout.PropertyField(_useSystemUnloadUnusedAssets);
|
||||||
|
|
||||||
float minUnloadUnusedAssetsInterval =
|
float minUnloadUnusedAssetsInterval =
|
||||||
@ -245,8 +247,9 @@ 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);
|
||||||
|
|||||||
@ -29,6 +29,10 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
|
|
||||||
string DecryptionServices { get; set; }
|
string DecryptionServices { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自动释放资源引用计数为0的资源包
|
||||||
|
/// </summary>
|
||||||
|
bool AutoUnloadBundleWhenUnused { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同时下载的最大数目。
|
/// 同时下载的最大数目。
|
||||||
|
|||||||
@ -34,7 +34,13 @@ 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>
|
||||||
@ -194,7 +200,8 @@ 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,33 +13,39 @@ 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);
|
||||||
return InitializeYooAssetEditorSimulateMode(resourcePackage, DefaultPackageName);
|
break;
|
||||||
}
|
}
|
||||||
case EPlayMode.OfflinePlayMode:
|
case EPlayMode.OfflinePlayMode:
|
||||||
{
|
{
|
||||||
// 单机运行模式
|
// 单机运行模式
|
||||||
return InitializeYooAssetOfflinePlayMode(resourcePackage, decryptionServices);
|
initializeParameters = InitializeYooAssetOfflinePlayMode(decryptionServices);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case EPlayMode.HostPlayMode:
|
case EPlayMode.HostPlayMode:
|
||||||
{
|
{
|
||||||
// 联机运行模式
|
// 联机运行模式
|
||||||
return InitializeYooAssetHostPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL, decryptionServices);
|
initializeParameters = InitializeYooAssetHostPlayMode(hostServerURL, fallbackHostServerURL, decryptionServices);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case EPlayMode.WebPlayMode:
|
case EPlayMode.WebPlayMode:
|
||||||
{
|
{
|
||||||
// WebGL运行模式
|
// WebGL运行模式
|
||||||
return InitializeYooAssetWebPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
|
initializeParameters = InitializeYooAssetWebPlayMode(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)
|
||||||
@ -54,32 +60,30 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
return decryptionServices;
|
return decryptionServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializationOperation InitializeYooAssetEditorSimulateMode(ResourcePackage resourcePackage, string packageName)
|
private InitializeParameters InitializeYooAssetEditorSimulateMode(string packageName)
|
||||||
{
|
{
|
||||||
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
||||||
var packageRoot = buildResult.PackageRootDirectory;
|
var packageRoot = buildResult.PackageRootDirectory;
|
||||||
var createParameters = new EditorSimulateModeParameters();
|
var initializeParameters = new EditorSimulateModeParameters();
|
||||||
createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
initializeParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
||||||
// createParameters.EditorFileSystemParameters.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES,new FileOffsetEncryption());
|
return initializeParameters;
|
||||||
return resourcePackage.InitializeAsync(createParameters);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializationOperation InitializeYooAssetOfflinePlayMode(ResourcePackage resourcePackage, IDecryptionServices decryptionServices = null)
|
private InitializeParameters InitializeYooAssetOfflinePlayMode(IDecryptionServices decryptionServices = null)
|
||||||
{
|
{
|
||||||
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
||||||
var initParameters = new OfflinePlayModeParameters();
|
var initializeParameters = new OfflinePlayModeParameters();
|
||||||
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||||
return resourcePackage.InitializeAsync(initParameters);
|
return initializeParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializationOperation InitializeYooAssetWebPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL)
|
private InitializeParameters InitializeYooAssetWebPlayMode(string hostServerURL, string fallbackHostServerURL)
|
||||||
{
|
{
|
||||||
var initParameters = new WebPlayModeParameters();
|
var initializeParameters = 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
|
||||||
|
|
||||||
|
|
||||||
@ -91,20 +95,20 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
initializeParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
||||||
initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
initializeParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
||||||
return resourcePackage.InitializeAsync(initParameters);
|
return initializeParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private InitializationOperation InitializeYooAssetHostPlayMode(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, IDecryptionServices decryptionServices = null)
|
private InitializeParameters InitializeYooAssetHostPlayMode(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 initParameters = new HostPlayModeParameters();
|
var initializeParameters = new HostPlayModeParameters();
|
||||||
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||||
initParameters.CacheFileSystemParameters = cacheFileSystem;
|
initializeParameters.CacheFileSystemParameters = cacheFileSystem;
|
||||||
return resourcePackage.InitializeAsync(initParameters);
|
return initializeParameters;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,11 @@ 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>
|
||||||
@ -807,6 +812,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
{
|
{
|
||||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -908,6 +914,7 @@ namespace AlicizaX.Resource.Runtime
|
|||||||
{
|
{
|
||||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user