Resource增加自动释放
This commit is contained in:
parent
b6eaa0c3d0
commit
f8f2ea0201
@ -32,6 +32,7 @@ namespace AlicizaX.Resource.Editor
|
||||
private SerializedProperty _packageName = null;
|
||||
private SerializedProperty _decryptionServices = null;
|
||||
private SerializedProperty _playMode = null;
|
||||
private SerializedProperty _autoUnloadBundleWhenUnused = null;
|
||||
private int _packageNameIndex = 0;
|
||||
private string[] _packageNames;
|
||||
|
||||
@ -101,6 +102,7 @@ namespace AlicizaX.Resource.Editor
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField(_autoUnloadBundleWhenUnused);
|
||||
EditorGUILayout.PropertyField(_useSystemUnloadUnusedAssets);
|
||||
|
||||
float minUnloadUnusedAssetsInterval =
|
||||
@ -245,8 +247,9 @@ namespace AlicizaX.Resource.Editor
|
||||
_downloadingMaxNum = serializedObject.FindProperty("downloadingMaxNum");
|
||||
_failedTryAgain = serializedObject.FindProperty("failedTryAgain");
|
||||
_packageName = serializedObject.FindProperty("packageName");
|
||||
_decryptionServices = serializedObject.FindProperty("_decryptionServices");
|
||||
_decryptionServices = serializedObject.FindProperty("decryptionServices");
|
||||
_playMode = serializedObject.FindProperty("_playMode");
|
||||
_autoUnloadBundleWhenUnused = serializedObject.FindProperty("autoUnloadBundleWhenUnused");
|
||||
RefreshDecryptionServices();
|
||||
RefreshTypeNames();
|
||||
_playModeIndex = EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
||||
|
||||
@ -29,6 +29,10 @@ namespace AlicizaX.Resource.Runtime
|
||||
|
||||
string DecryptionServices { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自动释放资源引用计数为0的资源包
|
||||
/// </summary>
|
||||
bool AutoUnloadBundleWhenUnused { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 同时下载的最大数目。
|
||||
|
||||
@ -34,7 +34,13 @@ namespace AlicizaX.Resource.Runtime
|
||||
|
||||
[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;
|
||||
|
||||
/// <summary>
|
||||
@ -194,7 +200,8 @@ namespace AlicizaX.Resource.Runtime
|
||||
_playMode = (EPlayMode)UnityEditor.EditorPrefs.GetInt(ResourceComponent.PrefsKey, 0);
|
||||
#endif
|
||||
_resourceModule.DefaultPackageName = PackageName;
|
||||
_resourceModule.DecryptionServices = _decryptionServices;
|
||||
_resourceModule.DecryptionServices = decryptionServices;
|
||||
_resourceModule.AutoUnloadBundleWhenUnused = autoUnloadBundleWhenUnused;
|
||||
_resourceModule.PlayMode = _playMode;
|
||||
_resourceModule.Milliseconds = milliseconds;
|
||||
_resourceModule.DownloadingMaxNum = DownloadingMaxNum;
|
||||
|
||||
@ -13,33 +13,39 @@ namespace AlicizaX.Resource.Runtime
|
||||
private InitializationOperation CreateInitializationOperationHandler(ResourcePackage resourcePackage, string hostServerURL, string fallbackHostServerURL, string decryptionServicesName)
|
||||
{
|
||||
IDecryptionServices decryptionServices = CreateDecryptionServices(decryptionServicesName);
|
||||
InitializeParameters initializeParameters = null;
|
||||
switch (PlayMode)
|
||||
{
|
||||
case EPlayMode.EditorSimulateMode:
|
||||
{
|
||||
// 编辑器下的模拟模式
|
||||
return InitializeYooAssetEditorSimulateMode(resourcePackage, DefaultPackageName);
|
||||
initializeParameters = InitializeYooAssetEditorSimulateMode(DefaultPackageName);
|
||||
break;
|
||||
}
|
||||
case EPlayMode.OfflinePlayMode:
|
||||
{
|
||||
// 单机运行模式
|
||||
return InitializeYooAssetOfflinePlayMode(resourcePackage, decryptionServices);
|
||||
initializeParameters = InitializeYooAssetOfflinePlayMode(decryptionServices);
|
||||
break;
|
||||
}
|
||||
case EPlayMode.HostPlayMode:
|
||||
{
|
||||
// 联机运行模式
|
||||
return InitializeYooAssetHostPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL, decryptionServices);
|
||||
initializeParameters = InitializeYooAssetHostPlayMode(hostServerURL, fallbackHostServerURL, decryptionServices);
|
||||
break;
|
||||
}
|
||||
case EPlayMode.WebPlayMode:
|
||||
{
|
||||
// WebGL运行模式
|
||||
return InitializeYooAssetWebPlayMode(resourcePackage, hostServerURL, fallbackHostServerURL);
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
initializeParameters = InitializeYooAssetWebPlayMode(hostServerURL, fallbackHostServerURL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (initializeParameters == null) return null;
|
||||
|
||||
initializeParameters.AutoUnloadBundleWhenUnused = AutoUnloadBundleWhenUnused;
|
||||
return resourcePackage.InitializeAsync(initializeParameters);
|
||||
}
|
||||
|
||||
private IDecryptionServices CreateDecryptionServices(string decryptionServicesName)
|
||||
@ -54,32 +60,30 @@ namespace AlicizaX.Resource.Runtime
|
||||
return decryptionServices;
|
||||
}
|
||||
|
||||
private InitializationOperation InitializeYooAssetEditorSimulateMode(ResourcePackage resourcePackage, string packageName)
|
||||
private InitializeParameters InitializeYooAssetEditorSimulateMode(string packageName)
|
||||
{
|
||||
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);
|
||||
var packageRoot = buildResult.PackageRootDirectory;
|
||||
var createParameters = new EditorSimulateModeParameters();
|
||||
createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
||||
// createParameters.EditorFileSystemParameters.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES,new FileOffsetEncryption());
|
||||
return resourcePackage.InitializeAsync(createParameters);
|
||||
var initializeParameters = new EditorSimulateModeParameters();
|
||||
initializeParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot);
|
||||
return initializeParameters;
|
||||
}
|
||||
|
||||
private InitializationOperation InitializeYooAssetOfflinePlayMode(ResourcePackage resourcePackage, IDecryptionServices decryptionServices = null)
|
||||
private InitializeParameters InitializeYooAssetOfflinePlayMode(IDecryptionServices decryptionServices = null)
|
||||
{
|
||||
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
||||
var initParameters = new OfflinePlayModeParameters();
|
||||
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||
return resourcePackage.InitializeAsync(initParameters);
|
||||
var initializeParameters = new OfflinePlayModeParameters();
|
||||
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||
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;
|
||||
IRemoteServices remoteServices = new RemoteServices(hostServerURL, fallbackHostServerURL);
|
||||
var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
|
||||
#if UNITY_WEBGL
|
||||
|
||||
#if WEIXINMINIGAME
|
||||
|
||||
|
||||
@ -91,20 +95,20 @@ namespace AlicizaX.Resource.Runtime
|
||||
#endif
|
||||
|
||||
#endif
|
||||
initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
||||
initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
||||
return resourcePackage.InitializeAsync(initParameters);
|
||||
initializeParameters.WebServerFileSystemParameters = webServerFileSystemParams;
|
||||
initializeParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
|
||||
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);
|
||||
var cacheFileSystem = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
|
||||
var buildinFileSystem = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryptionServices);
|
||||
var initParameters = new HostPlayModeParameters();
|
||||
initParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||
initParameters.CacheFileSystemParameters = cacheFileSystem;
|
||||
return resourcePackage.InitializeAsync(initParameters);
|
||||
var initializeParameters = new HostPlayModeParameters();
|
||||
initializeParameters.BuildinFileSystemParameters = buildinFileSystem;
|
||||
initializeParameters.CacheFileSystemParameters = cacheFileSystem;
|
||||
return initializeParameters;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,6 +27,11 @@ namespace AlicizaX.Resource.Runtime
|
||||
|
||||
public string DecryptionServices { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自动释放资源引用计数为0的资源包
|
||||
/// </summary>
|
||||
public bool AutoUnloadBundleWhenUnused { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)
|
||||
/// </summary>
|
||||
@ -807,6 +812,7 @@ namespace AlicizaX.Resource.Runtime
|
||||
{
|
||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -908,6 +914,7 @@ namespace AlicizaX.Resource.Runtime
|
||||
{
|
||||
loadAssetCallbacks.LoadAssetFailureCallback(location, LoadResourceStatus.NotExist, errorMessage, userData);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user