diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs b/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs
new file mode 100644
index 00000000..545bb647
--- /dev/null
+++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs
@@ -0,0 +1,274 @@
+using YooAsset;
+
+#region InitializeParameters
+///
+/// 初始化参数
+///
+public abstract class InitializeParameters
+{
+ ///
+ /// 同时加载Bundle文件的最大并发数
+ ///
+ public int BundleLoadingMaxConcurrency = int.MaxValue;
+
+ ///
+ /// 当资源引用计数为零的时候自动释放资源包
+ ///
+ public bool AutoUnloadBundleWhenUnused = false;
+
+ ///
+ /// WebGL平台强制同步加载资源对象
+ ///
+ public bool WebGLForceSyncLoadAsset = false;
+}
+
+///
+/// 编辑器下模拟运行模式的初始化参数
+///
+public class EditorSimulateModeParameters : InitializeParameters
+{
+ public FileSystemParameters EditorFileSystemParameters;
+}
+
+///
+/// 离线运行模式的初始化参数
+///
+public class OfflinePlayModeParameters : InitializeParameters
+{
+ public FileSystemParameters BuildinFileSystemParameters;
+}
+
+///
+/// 联机运行模式的初始化参数
+///
+public class HostPlayModeParameters : InitializeParameters
+{
+ public FileSystemParameters BuildinFileSystemParameters;
+ public FileSystemParameters CacheFileSystemParameters;
+}
+
+///
+/// WebGL运行模式的初始化参数
+///
+public class WebPlayModeParameters : InitializeParameters
+{
+ public FileSystemParameters WebServerFileSystemParameters;
+ public FileSystemParameters WebRemoteFileSystemParameters;
+}
+#endregion
+
+#region InitializationOperation
+public class InitializationOperation : AsyncOperationBase
+{
+ private bool _isDone = false;
+ private readonly InitializePackageOperation _operation;
+
+ internal InitializationOperation(InitializePackageOperation op)
+ {
+ _operation = op;
+ }
+ internal override void InternalStart()
+ {
+ }
+ internal override void InternalUpdate()
+ {
+ if (_isDone)
+ return;
+
+ _operation.UpdateOperation();
+ if (_operation.IsDone == false)
+ return;
+
+ _isDone = true;
+ Status = _operation.Status;
+ Error = _operation.Error;
+ }
+}
+#endregion
+
+#region DestroyOperation
+public class DestroyOperation : AsyncOperationBase
+{
+ private bool _isDone = false;
+ private readonly DestroyPackageOperation _operation;
+
+ internal DestroyOperation(DestroyPackageOperation op)
+ {
+ _operation = op;
+ }
+ internal override void InternalStart()
+ {
+ }
+ internal override void InternalUpdate()
+ {
+ if (_isDone)
+ return;
+
+ _operation.UpdateOperation();
+ if (_operation.IsDone == false)
+ return;
+
+ _isDone = true;
+ Status = _operation.Status;
+ Error = _operation.Error;
+ }
+}
+#endregion
+
+#region UpdatePackageManifestOperation
+public class UpdatePackageManifestOperation : AsyncOperationBase
+{
+ private bool _isDone = false;
+ private readonly LoadPackageManifestOperation _operation;
+
+ internal UpdatePackageManifestOperation(LoadPackageManifestOperation op)
+ {
+ _operation = op;
+ }
+ internal override void InternalStart()
+ {
+ }
+ internal override void InternalUpdate()
+ {
+ if (_isDone)
+ return;
+
+ _operation.UpdateOperation();
+ if (_operation.IsDone == false)
+ return;
+
+ _isDone = true;
+ Status = _operation.Status;
+ Error = _operation.Error;
+ }
+}
+#endregion
+
+public static class CompatibleOldVersion
+{
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static InitializationOperation InitializeAsync(this ResourcePackage package, InitializeParameters parameters)
+ {
+ if (parameters is EditorSimulateModeParameters)
+ {
+ var initializeParameters = parameters as EditorSimulateModeParameters;
+ var options = new EditorSimulateModeOptions();
+ options.BundleLoadingMaxConcurrency = initializeParameters.BundleLoadingMaxConcurrency;
+ options.AutoUnloadBundleWhenUnused = initializeParameters.AutoUnloadBundleWhenUnused;
+ options.WebGLForceSyncLoadAsset = initializeParameters.WebGLForceSyncLoadAsset;
+ options.EditorFileSystemParameters = initializeParameters.EditorFileSystemParameters;
+ var operation = package.InitializePackageAsync(options);
+ var wrapper = new InitializationOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+ else if (parameters is OfflinePlayModeParameters)
+ {
+ var initializeParameters = parameters as OfflinePlayModeParameters;
+ var options = new OfflinePlayModeOptions();
+ options.BundleLoadingMaxConcurrency = initializeParameters.BundleLoadingMaxConcurrency;
+ options.AutoUnloadBundleWhenUnused = initializeParameters.AutoUnloadBundleWhenUnused;
+ options.WebGLForceSyncLoadAsset = initializeParameters.WebGLForceSyncLoadAsset;
+ options.BuildinFileSystemParameters = initializeParameters.BuildinFileSystemParameters;
+ var operation = package.InitializePackageAsync(options);
+ var wrapper = new InitializationOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+ else if (parameters is HostPlayModeParameters)
+ {
+ var initializeParameters = parameters as HostPlayModeParameters;
+ var options = new HostPlayModeOptions();
+ options.BundleLoadingMaxConcurrency = initializeParameters.BundleLoadingMaxConcurrency;
+ options.AutoUnloadBundleWhenUnused = initializeParameters.AutoUnloadBundleWhenUnused;
+ options.WebGLForceSyncLoadAsset = initializeParameters.WebGLForceSyncLoadAsset;
+ options.BuildinFileSystemParameters = initializeParameters.BuildinFileSystemParameters;
+ options.CacheFileSystemParameters = initializeParameters.CacheFileSystemParameters;
+ var operation = package.InitializePackageAsync(options);
+ var wrapper = new InitializationOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+ else if (parameters is WebPlayModeParameters)
+ {
+ var initializeParameters = parameters as WebPlayModeParameters;
+ var options = new WebPlayModeOptions();
+ options.BundleLoadingMaxConcurrency = initializeParameters.BundleLoadingMaxConcurrency;
+ options.AutoUnloadBundleWhenUnused = initializeParameters.AutoUnloadBundleWhenUnused;
+ options.WebGLForceSyncLoadAsset = initializeParameters.WebGLForceSyncLoadAsset;
+ options.WebServerFileSystemParameters = initializeParameters.WebServerFileSystemParameters;
+ options.WebRemoteFileSystemParameters = initializeParameters.WebRemoteFileSystemParameters;
+ var operation = package.InitializePackageAsync(options);
+ var wrapper = new InitializationOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+ else
+ {
+ throw new System.NotImplementedException();
+ }
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static DestroyOperation DestroyAsync(this ResourcePackage package)
+ {
+ var operation = package.DestroyPackageAsync();
+ var wrapper = new DestroyOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static RequestPackageVersionOperation RequestPackageVersionAsync(this ResourcePackage package, bool appendTimeTicks = true, int timeout = 60)
+ {
+ var options = new RequestPackageVersionOptions(appendTimeTicks, timeout);
+ var operation = package.RequestPackageVersionAsync(options);
+ return operation;
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static UpdatePackageManifestOperation UpdatePackageManifestAsync(this ResourcePackage package, string packageVersion, int timeout = 60)
+ {
+ var options = new LoadPackageManifestOptions(packageVersion, timeout);
+ var operation = package.LoadPackageManifestAsync(options);
+ var wrapper = new UpdatePackageManifestOperation(operation);
+ OperationSystem.StartOperation(package.PackageName, wrapper);
+ return wrapper;
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static PreDownloadContentOperation PreDownloadContentAsync(this ResourcePackage package, string packageVersion, int timeout = 60)
+ {
+ var options = new PreDownloadContentOptions(packageVersion, timeout);
+ var operation = package.PreDownloadContentAsync(options);
+ return operation;
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static ClearCacheFilesOperation ClearCacheFilesAsync(this ResourcePackage package, EFileClearMode fileClearMode, object clearParam = null)
+ {
+ var options = new ClearCacheFilesOptions(fileClearMode, clearParam);
+ return package.ClearCacheFilesAsync(options);
+ }
+
+ ///
+ /// 兼容Yoo2版本
+ ///
+ public static ClearCacheFilesOperation ClearCacheFilesAsync(this ResourcePackage package, string fileClearMode, object clearParam = null)
+ {
+ var options = new ClearCacheFilesOptions(fileClearMode, clearParam);
+ return package.ClearCacheFilesAsync(options);
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs.meta b/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs.meta
new file mode 100644
index 00000000..466e4d35
--- /dev/null
+++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/CompatibleOldVersion.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b974d3d744622f3499d026f99074cd72
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: