diff --git a/Assets/YooAsset/Samples~/Test Sample/Editor/TestSimulateBuilder.cs b/Assets/YooAsset/Samples~/Test Sample/Editor/TestSimulateBuilder.cs index 8526b3e4..0789a27b 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Editor/TestSimulateBuilder.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Editor/TestSimulateBuilder.cs @@ -22,7 +22,7 @@ public static class TestSimulateBuilder buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; + buildParameters.PackageVersion = "ESBP_Simulate"; buildParameters.FileNameStyle = EFileNameStyle.HashName; buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; buildParameters.BuildinFileCopyParams = string.Empty; @@ -50,7 +50,7 @@ public static class TestSimulateBuilder buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; + buildParameters.PackageVersion = "SBP_Simulate"; buildParameters.EnableSharePackRule = true; buildParameters.VerifyBuildingResult = true; buildParameters.FileNameStyle = EFileNameStyle.HashName; @@ -83,7 +83,7 @@ public static class TestSimulateBuilder buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; + buildParameters.PackageVersion = "BBP_Simulate"; buildParameters.EnableSharePackRule = true; buildParameters.VerifyBuildingResult = true; buildParameters.FileNameStyle = EFileNameStyle.HashName; @@ -116,7 +116,7 @@ public static class TestSimulateBuilder buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; + buildParameters.PackageVersion = "RFBP_Simulate"; buildParameters.VerifyBuildingResult = true; buildParameters.FileNameStyle = EFileNameStyle.HashName; buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs new file mode 100644 index 00000000..11cce93d --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs @@ -0,0 +1,6 @@ + +public class AssetBundleCollectorDefine +{ + public const string TestPackageName = "TestPackage"; + public const string RawPackageName = "RawPackage"; +} \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs.meta b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs.meta new file mode 100644 index 00000000..86a432bb --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorDefine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b69d1ce3e025474e84dd43b10068740 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorMaker.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorMaker.cs index de75421a..f1804cb4 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorMaker.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorMaker.cs @@ -15,7 +15,7 @@ public static class AssetBundleCollectorMaker YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll(); // 创建正常文件Package - var testPackage = YooAsset.Editor.AssetBundleCollectorSettingData.CreatePackage("TestPackage"); + var testPackage = YooAsset.Editor.AssetBundleCollectorSettingData.CreatePackage(AssetBundleCollectorDefine.TestPackageName); testPackage.EnableAddressable = true; testPackage.AutoCollectShaders = true; testPackage.IgnoreRuleName = "NormalIgnoreRule"; @@ -27,7 +27,7 @@ public static class AssetBundleCollectorMaker collector1.CollectPath = ""; collector1.CollectorGUID = "bbce3e09a17b55c46b5615e995b5fc70"; //TestRes/Audios目录 collector1.CollectorType = YooAsset.Editor.ECollectorType.MainAssetCollector; - collector1.PackRuleName = nameof(YooAsset.Editor.PackDirectory); + collector1.PackRuleName = nameof(YooAsset.Editor.PackSeparately); YooAsset.Editor.AssetBundleCollectorSettingData.CreateCollector(audioGroup, collector1); } @@ -38,7 +38,7 @@ public static class AssetBundleCollectorMaker collector1.CollectPath = ""; collector1.CollectorGUID = "d4768b7c3d3101d4ea693f95b337861d"; //TestRes/Image目录 collector1.CollectorType = YooAsset.Editor.ECollectorType.MainAssetCollector; - collector1.PackRuleName = nameof(YooAsset.Editor.PackDirectory); + collector1.PackRuleName = nameof(YooAsset.Editor.PackSeparately); YooAsset.Editor.AssetBundleCollectorSettingData.CreateCollector(imageGroup, collector1); } @@ -89,11 +89,12 @@ public static class AssetBundleCollectorMaker collector1.CollectPath = ""; collector1.CollectorGUID = "af885cf1a7abb8c44bd9d139409d2961"; //TestRes/ScriptableObject目录 collector1.CollectorType = YooAsset.Editor.ECollectorType.MainAssetCollector; + collector1.PackRuleName = nameof(YooAsset.Editor.PackSeparately); YooAsset.Editor.AssetBundleCollectorSettingData.CreateCollector(scriptableObjectGroup, collector1); } // 创建原生文件Package - var rawPackage = YooAsset.Editor.AssetBundleCollectorSettingData.CreatePackage("RawPackage"); + var rawPackage = YooAsset.Editor.AssetBundleCollectorSettingData.CreatePackage(AssetBundleCollectorDefine.RawPackageName); rawPackage.EnableAddressable = true; rawPackage.AutoCollectShaders = true; rawPackage.IgnoreRuleName = "RawFileIgnoreRule"; diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs new file mode 100644 index 00000000..e2041fe1 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Text; +using System.Collections; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.U2D; +using UnityEngine.TestTools; +using NUnit.Framework; +using YooAsset; + +public class AssetBundleCollectorPreapre : IPrebuildSetup, IPostBuildCleanup +{ + void IPrebuildSetup.Setup() + { + AssetBundleCollectorMaker.MakeCollectorSettingData(); + } + void IPostBuildCleanup.Cleanup() + { + } + + [Test] + public void InitializeYooAssets() + { + // 初始化YooAsset + YooAssets.Initialize(); + } +} \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs.meta b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs.meta new file mode 100644 index 00000000..fdb3e838 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/AssetBundleCollectorPreapre.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07f7c95e8e42fd04f81b9925b2dcf0d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/BuildinFileSystemTester.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/BuildinFileSystemTester.cs index 1c27f131..19dcebf4 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/BuildinFileSystemTester.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/BuildinFileSystemTester.cs @@ -11,57 +11,52 @@ using YooAsset; public class BuildinFileSystemTester : IPrebuildSetup, IPostBuildCleanup { - private const string TEST_PACKAGE_ROOT_KEY = "TEST_PACKAGE_ROOT_KEY"; - private const string RAW_PACKAGE_ROOT_KEY = "RAW_PACKAGE_ROOT_KEY"; + private const string BFS_TEST_PACKAGE_ROOT_KEY = "BFS_TEST_PACKAGE_ROOT_KEY"; + private const string BFS_RAW_PACKAGE_ROOT_KEY = "BFS_RAW_PACKAGE_ROOT_KEY"; void IPrebuildSetup.Setup() { #if UNITY_EDITOR - AssetBundleCollectorMaker.MakeCollectorSettingData(); - // 构建TestPackage { - var simulateParams = new EditorSimulateBuildParam("TestPackage"); + var simulateParams = new EditorSimulateBuildParam(AssetBundleCollectorDefine.TestPackageName); simulateParams.BuildPipelineName = "ScriptableBuildPipeline"; simulateParams.InvokeAssmeblyName = "YooAsset.Test.Editor"; simulateParams.InvokeClassFullName = "TestSimulateBuilder"; simulateParams.InvokeMethodName = "SimulateBuild"; var simulateResult = EditorSimulateModeHelper.SimulateBuild(simulateParams); - UnityEditor.EditorPrefs.SetString(TEST_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); + UnityEditor.EditorPrefs.SetString(BFS_TEST_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); } // 构建RawPackage { - var simulateParams = new EditorSimulateBuildParam("RawPackage"); + var simulateParams = new EditorSimulateBuildParam(AssetBundleCollectorDefine.RawPackageName); simulateParams.BuildPipelineName = "RawFileBuildPipeline"; simulateParams.InvokeAssmeblyName = "YooAsset.Test.Editor"; simulateParams.InvokeClassFullName = "TestSimulateBuilder"; simulateParams.InvokeMethodName = "SimulateBuild"; var simulateResult = EditorSimulateModeHelper.SimulateBuild(simulateParams); - UnityEditor.EditorPrefs.SetString(RAW_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); + UnityEditor.EditorPrefs.SetString(BFS_RAW_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); } #endif } void IPostBuildCleanup.Cleanup() { } - - [UnitySetUp] - public virtual IEnumerator RuntimeSetup() + + [UnityTest] + public IEnumerator InitializePackage() { - // 初始化YooAsset - YooAssets.Initialize(); - // 初始化TestPackage { string packageRoot = string.Empty; #if UNITY_EDITOR - packageRoot = UnityEditor.EditorPrefs.GetString(TEST_PACKAGE_ROOT_KEY); + packageRoot = UnityEditor.EditorPrefs.GetString(BFS_TEST_PACKAGE_ROOT_KEY); #endif if (Directory.Exists(packageRoot) == false) throw new Exception($"Not found package root : {packageRoot}"); - var package = YooAssets.CreatePackage("TestPackage"); + var package = YooAssets.CreatePackage(AssetBundleCollectorDefine.TestPackageName); // 初始化资源包 var initParams = new OfflinePlayModeParameters(); @@ -91,12 +86,12 @@ public class BuildinFileSystemTester : IPrebuildSetup, IPostBuildCleanup { string packageRoot = string.Empty; #if UNITY_EDITOR - packageRoot = UnityEditor.EditorPrefs.GetString(RAW_PACKAGE_ROOT_KEY); + packageRoot = UnityEditor.EditorPrefs.GetString(BFS_RAW_PACKAGE_ROOT_KEY); #endif if (Directory.Exists(packageRoot) == false) throw new Exception($"Not found package root : {packageRoot}"); - var package = YooAssets.CreatePackage("RawPackage"); + var package = YooAssets.CreatePackage(AssetBundleCollectorDefine.RawPackageName); // 初始化资源包 var initParams = new OfflinePlayModeParameters(); @@ -125,9 +120,58 @@ public class BuildinFileSystemTester : IPrebuildSetup, IPostBuildCleanup } [UnityTest] - public IEnumerator RuntimeInit() + public IEnumerator TestLoadAudio() { - // 声明该方法可以被自动化流程识别! - yield break; + var tester = new TestLoadAudio(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadImage() + { + var tester = new TestLoadImage(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadPrefab() + { + var tester = new TestLoadPrefab(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadScene() + { + var tester = new TestLoadScene(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadScriptableObject() + { + var tester = new TestLoadScriptableObject(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadSpriteAtlas() + { + var tester = new TestLoadSpriteAtlas(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadRawFile() + { + var tester = new TestLoadRawFile(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadVideo() + { + var tester = new TestLoadVideo(); + yield return tester.RuntimeTester(); } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/EditorFileSystemTester.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/EditorFileSystemTester.cs index 9fbdf45e..2fd30155 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/EditorFileSystemTester.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/EditorFileSystemTester.cs @@ -3,18 +3,204 @@ using System.IO; using System.Text; using System.Collections; using UnityEngine; +using UnityEngine.UI; +using UnityEngine.U2D; using UnityEngine.TestTools; +using NUnit.Framework; using YooAsset; public class EditorFileSystemTester : IPrebuildSetup, IPostBuildCleanup { - public void Setup() + private const string EFS_TEST_PACKAGE_ROOT_KEY = "EFS_TEST_PACKAGE_ROOT_KEY"; + private const string EFS_RAW_PACKAGE_ROOT_KEY = "EFS_RAW_PACKAGE_ROOT_KEY"; + + void IPrebuildSetup.Setup() + { +#if UNITY_EDITOR + // 构建TestPackage + { + var simulateParams = new EditorSimulateBuildParam(AssetBundleCollectorDefine.TestPackageName); + simulateParams.BuildPipelineName = "EditorSimulateBuildPipeline"; + simulateParams.InvokeAssmeblyName = "YooAsset.Test.Editor"; + simulateParams.InvokeClassFullName = "TestSimulateBuilder"; + simulateParams.InvokeMethodName = "SimulateBuild"; + var simulateResult = EditorSimulateModeHelper.SimulateBuild(simulateParams); + UnityEditor.EditorPrefs.SetString(EFS_TEST_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); + } + + // 构建RawPackage + { + var simulateParams = new EditorSimulateBuildParam(AssetBundleCollectorDefine.RawPackageName); + simulateParams.BuildPipelineName = "EditorSimulateBuildPipeline"; + simulateParams.InvokeAssmeblyName = "YooAsset.Test.Editor"; + simulateParams.InvokeClassFullName = "TestSimulateBuilder"; + simulateParams.InvokeMethodName = "SimulateBuild"; + var simulateResult = EditorSimulateModeHelper.SimulateBuild(simulateParams); + UnityEditor.EditorPrefs.SetString(EFS_RAW_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory); + } +#endif + } + void IPostBuildCleanup.Cleanup() { - throw new NotImplementedException(); } - public void Cleanup() + [UnityTest] + public IEnumerator DestroyPackage() { - throw new NotImplementedException(); + // 销毁旧资源包 + { + var package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); + var destroyOp = package.DestroyAsync(); + yield return destroyOp; + if (destroyOp.Status != EOperationStatus.Succeed) + Debug.LogError(destroyOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, destroyOp.Status); + + bool result = YooAssets.RemovePackage(AssetBundleCollectorDefine.TestPackageName); + Assert.IsTrue(result); + } + + // 销毁旧资源包 + { + var package = YooAssets.GetPackage(AssetBundleCollectorDefine.RawPackageName); + var destroyOp = package.DestroyAsync(); + yield return destroyOp; + if (destroyOp.Status != EOperationStatus.Succeed) + Debug.LogError(destroyOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, destroyOp.Status); + + bool result = YooAssets.RemovePackage(AssetBundleCollectorDefine.RawPackageName); + Assert.IsTrue(result); + } + } + + [UnityTest] + public IEnumerator InitializePackage() + { + // 初始化TestPackage + { + string packageRoot = string.Empty; +#if UNITY_EDITOR + packageRoot = UnityEditor.EditorPrefs.GetString(EFS_TEST_PACKAGE_ROOT_KEY); +#endif + if (Directory.Exists(packageRoot) == false) + throw new Exception($"Not found package root : {packageRoot}"); + + var package = YooAssets.CreatePackage(AssetBundleCollectorDefine.TestPackageName); + + // 初始化资源包 + var initParams = new EditorSimulateModeParameters(); + initParams.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot); + var initializeOp = package.InitializeAsync(initParams); + yield return initializeOp; + if (initializeOp.Status != EOperationStatus.Succeed) + Debug.LogError(initializeOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, initializeOp.Status); + + // 请求资源版本 + var requetVersionOp = package.RequestPackageVersionAsync(); + yield return requetVersionOp; + if (requetVersionOp.Status != EOperationStatus.Succeed) + Debug.LogError(requetVersionOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status); + + // 更新资源清单 + var updateManifestOp = package.UpdatePackageManifestAsync(requetVersionOp.PackageVersion); + yield return updateManifestOp; + if (updateManifestOp.Status != EOperationStatus.Succeed) + Debug.LogError(updateManifestOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status); + } + + // 初始化RawPackage + { + string packageRoot = string.Empty; +#if UNITY_EDITOR + packageRoot = UnityEditor.EditorPrefs.GetString(EFS_RAW_PACKAGE_ROOT_KEY); +#endif + if (Directory.Exists(packageRoot) == false) + throw new Exception($"Not found package root : {packageRoot}"); + + var package = YooAssets.CreatePackage(AssetBundleCollectorDefine.RawPackageName); + + // 初始化资源包 + var initParams = new EditorSimulateModeParameters(); + initParams.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot); + var initializeOp = package.InitializeAsync(initParams); + yield return initializeOp; + if (initializeOp.Status != EOperationStatus.Succeed) + Debug.LogError(initializeOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, initializeOp.Status); + + // 请求资源版本 + var requetVersionOp = package.RequestPackageVersionAsync(); + yield return requetVersionOp; + if (requetVersionOp.Status != EOperationStatus.Succeed) + Debug.LogError(requetVersionOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status); + + // 更新资源清单 + var updateManifestOp = package.UpdatePackageManifestAsync(requetVersionOp.PackageVersion); + yield return updateManifestOp; + if (updateManifestOp.Status != EOperationStatus.Succeed) + Debug.LogError(updateManifestOp.Error); + Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status); + } + } + + [UnityTest] + public IEnumerator TestLoadAudio() + { + var tester = new TestLoadAudio(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadImage() + { + var tester = new TestLoadImage(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadPrefab() + { + var tester = new TestLoadPrefab(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadScene() + { + var tester = new TestLoadScene(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadScriptableObject() + { + var tester = new TestLoadScriptableObject(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadSpriteAtlas() + { + var tester = new TestLoadSpriteAtlas(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadRawFile() + { + var tester = new TestLoadRawFile(); + yield return tester.RuntimeTester(); + } + + [UnityTest] + public IEnumerator TestLoadVideo() + { + var tester = new TestLoadVideo(); + yield return tester.RuntimeTester(); } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadAudio.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadAudio.cs index 94c2f6b6..5c513e28 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadAudio.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadAudio.cs @@ -11,13 +11,12 @@ using YooAsset; public class TestLoadAudio { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); - // 音乐 + // 音乐异步加载 { var assetHandle = package.LoadAssetAsync<AudioClip>("music_a"); yield return assetHandle; @@ -27,7 +26,7 @@ public class TestLoadAudio Assert.IsNotNull(audioClip); } - // 音效 + // 音效异步加载 { var assetHandle = package.LoadAssetAsync<AudioClip>("sound_a"); yield return assetHandle; @@ -36,5 +35,15 @@ public class TestLoadAudio var audioClip = assetHandle.AssetObject as AudioClip; Assert.IsNotNull(audioClip); } + + // 音效同步加载 + { + var assetHandle = package.LoadAssetSync<AudioClip>("sound_b"); + yield return assetHandle; + Assert.AreEqual(EOperationStatus.Succeed, assetHandle.Status); + + var audioClip = assetHandle.AssetObject as AudioClip; + Assert.IsNotNull(audioClip); + } } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadImage.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadImage.cs index 9433632d..f3ee3684 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadImage.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadImage.cs @@ -11,20 +11,35 @@ using YooAsset; public class TestLoadImage { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); - var subAssetsHandle = package.LoadSubAssetsAsync<Sprite>("image_a"); - yield return subAssetsHandle; - Assert.AreEqual(EOperationStatus.Succeed, subAssetsHandle.Status); + // 异步加载子对象 + { + var subAssetsHandle = package.LoadSubAssetsAsync<Sprite>("image_a"); + yield return subAssetsHandle; + Assert.AreEqual(EOperationStatus.Succeed, subAssetsHandle.Status); - var subAssetObjects = subAssetsHandle.SubAssetObjects; - Assert.IsNotNull(subAssetObjects); + var subAssetObjects = subAssetsHandle.SubAssetObjects; + Assert.IsNotNull(subAssetObjects); - int count = subAssetObjects.Count; - Assert.AreEqual(count, 3); + int count = subAssetObjects.Count; + Assert.AreEqual(count, 3); + } + + // 同步加载子对象 + { + var subAssetsHandle = package.LoadSubAssetsSync<Sprite>("image_b"); + yield return subAssetsHandle; + Assert.AreEqual(EOperationStatus.Succeed, subAssetsHandle.Status); + + var subAssetObjects = subAssetsHandle.SubAssetObjects; + Assert.IsNotNull(subAssetObjects); + + int count = subAssetObjects.Count; + Assert.AreEqual(count, 3); + } } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadPrefab.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadPrefab.cs index 289feebd..ad8ebe12 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadPrefab.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadPrefab.cs @@ -11,13 +11,12 @@ using YooAsset; public class TestLoadPrefab { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); - // 加载所有预制体 + // 异步加载所有预制体 { var allAssetsHandle = package.LoadAllAssetsAsync<GameObject>("prefab_a"); yield return allAssetsHandle; @@ -30,9 +29,24 @@ public class TestLoadPrefab Assert.AreEqual(count, 3); } - // 加载指定预制体 + // 异步加载指定预制体 { - var assetsHandle = package.LoadAssetAsync<GameObject>("prefab_a"); + var assetsHandle = package.LoadAssetAsync<GameObject>("prefab_b"); + yield return assetsHandle; + Assert.AreEqual(EOperationStatus.Succeed, assetsHandle.Status); + Assert.IsNotNull(assetsHandle.AssetObject); + + var instantiateOp = assetsHandle.InstantiateAsync(); + yield return instantiateOp; + Assert.AreEqual(EOperationStatus.Succeed, instantiateOp.Status); + + Assert.IsNotNull(instantiateOp.Result); + TestLogger.Log(this, instantiateOp.Result.name); + } + + // 同步加载指定预制体 + { + var assetsHandle = package.LoadAssetSync<GameObject>("prefab_c"); yield return assetsHandle; Assert.AreEqual(EOperationStatus.Succeed, assetsHandle.Status); Assert.IsNotNull(assetsHandle.AssetObject); diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadRawFile.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadRawFile.cs index 8ce3bafb..8770d432 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadRawFile.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadRawFile.cs @@ -11,10 +11,9 @@ using YooAsset; public class TestLoadRawFile { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("RawPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.RawPackageName); Assert.IsNotNull(package); // 测试异步加载 diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScene.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScene.cs index 8529d09a..d8e42eee 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScene.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScene.cs @@ -12,13 +12,12 @@ using YooAsset; public class TestLoadScene { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); - // 主场景 + // 异步加载主场景 { var sceneHandle = package.LoadSceneAsync("scene_a", LoadSceneMode.Single); yield return sceneHandle; @@ -28,7 +27,7 @@ public class TestLoadScene Assert.IsNotNull(scene); } - // 附加场景 + // 异步加载附加场景 yield return new WaitForSeconds(1f); { var sceneHandle = package.LoadSceneAsync("scene_b", LoadSceneMode.Additive); @@ -39,15 +38,21 @@ public class TestLoadScene Assert.IsNotNull(scene); } - // 主场景 + // 异步加载附加场景 yield return new WaitForSeconds(1f); { - var sceneHandle = package.LoadSceneAsync("scene_c", LoadSceneMode.Single); + var sceneHandle = package.LoadSceneSync("scene_c", LoadSceneMode.Additive); yield return sceneHandle; Assert.AreEqual(EOperationStatus.Succeed, sceneHandle.Status); var scene = sceneHandle.SceneObject; Assert.IsNotNull(scene); + + // 异步销毁附加场景 + yield return new WaitForSeconds(1f); + var unloadSceneOp = sceneHandle.UnloadAsync(); + yield return unloadSceneOp; + Assert.AreEqual(EOperationStatus.Succeed, unloadSceneOp.Status); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScriptableObject.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScriptableObject.cs index 2ac90106..475f24b3 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScriptableObject.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadScriptableObject.cs @@ -11,18 +11,31 @@ using YooAsset; public class TestLoadScriptableObject { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); - var assetHandle = package.LoadAssetAsync("game_config"); - yield return assetHandle; - Assert.AreEqual(EOperationStatus.Succeed, assetHandle.Status); + // 异步加载序列化对象 + { + var assetHandle = package.LoadAssetAsync("config_a"); + yield return assetHandle; + Assert.AreEqual(EOperationStatus.Succeed, assetHandle.Status); - var testScriptableObject = assetHandle.AssetObject as TestScriptableObject; - Assert.IsNotNull(testScriptableObject); - TestLogger.Log(this, testScriptableObject.ConfigName); + var testScriptableObject = assetHandle.AssetObject as TestScriptableObject; + Assert.IsNotNull(testScriptableObject); + TestLogger.Log(this, testScriptableObject.ConfigName); + } + + // 同步加载序列化对象 + { + var assetHandle = package.LoadAssetSync("config_b"); + yield return assetHandle; + Assert.AreEqual(EOperationStatus.Succeed, assetHandle.Status); + + var testScriptableObject = assetHandle.AssetObject as TestScriptableObject; + Assert.IsNotNull(testScriptableObject); + TestLogger.Log(this, testScriptableObject.ConfigName); + } } } \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadSpriteAtlas.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadSpriteAtlas.cs index f4433ca0..a1142ea1 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadSpriteAtlas.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadSpriteAtlas.cs @@ -11,10 +11,9 @@ using YooAsset; public class TestLoadSpriteAtlas { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("TestPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.TestPackageName); Assert.IsNotNull(package); var assetHandle = package.LoadAssetAsync<SpriteAtlas>("atlas_icon"); diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadVideo.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadVideo.cs index 0a3133ef..807d02bc 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadVideo.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/TestLoadVideo.cs @@ -12,10 +12,9 @@ using UnityEngine.Video; public class TestLoadVideo { - [UnityTest] public IEnumerator RuntimeTester() { - ResourcePackage package = YooAssets.GetPackage("RawPackage"); + ResourcePackage package = YooAssets.GetPackage(AssetBundleCollectorDefine.RawPackageName); Assert.IsNotNull(package); var rawFileHandle = package.LoadRawFileAsync("video_logo"); diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png b/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png new file mode 100644 index 00000000..7268960f Binary files /dev/null and b/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png differ diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png.meta b/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png.meta new file mode 100644 index 00000000..bdf87778 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/Image/image_b.png.meta @@ -0,0 +1,219 @@ +fileFormatVersion: 2 +guid: 837b56496d5027c41a3214fcbfb6ae2f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: image_a_0 + rect: + serializedVersion: 2 + x: 21 + y: 16 + width: 471 + height: 473 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 91146573e1a4d014a806b24fa9cb6f0d + internalID: -1425660917 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: image_a_1 + rect: + serializedVersion: 2 + x: 526 + y: 12 + width: 483 + height: 480 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a1731b0da909b874186c63cdcaacdf44 + internalID: 1768656825 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: image_a_2 + rect: + serializedVersion: 2 + x: 1032 + y: 9 + width: 484 + height: 486 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 539d18f1e9de1d748adba679160d2560 + internalID: -1756424530 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 9548a159e49be6d46a487f932e9ced9a + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: + image_a_0: -1425660917 + image_a_1: 1768656825 + image_a_2: -1756424530 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_b.unity b/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_b.unity index fbeab51e..6ed7bf61 100644 --- a/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_b.unity +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_b.unity @@ -315,7 +315,7 @@ Transform: m_GameObject: {fileID: 1622835240} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: -1.5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_c.unity b/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_c.unity index 65761278..8203e320 100644 --- a/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_c.unity +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/Scene/scene_c.unity @@ -317,7 +317,7 @@ Transform: m_GameObject: {fileID: 1590071827} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 1.5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/game_config.asset b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_a.asset similarity index 90% rename from Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/game_config.asset rename to Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_a.asset index 8daa5243..c47eacdd 100644 --- a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/game_config.asset +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_a.asset @@ -10,6 +10,6 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 11ddf12cbeb412347957744c69cfc3b6, type: 3} - m_Name: game_config + m_Name: config_a m_EditorClassIdentifier: - ConfigName: yoo + ConfigName: config a diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/game_config.asset.meta b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_a.asset.meta similarity index 100% rename from Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/game_config.asset.meta rename to Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_a.asset.meta diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset new file mode 100644 index 00000000..ae40949f --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 11ddf12cbeb412347957744c69cfc3b6, type: 3} + m_Name: config_b + m_EditorClassIdentifier: + ConfigName: config b diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset.meta b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset.meta new file mode 100644 index 00000000..782a9f99 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_b.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f028d1ae726a7154fb9893e0171af947 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset new file mode 100644 index 00000000..bd0eabf5 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 11ddf12cbeb412347957744c69cfc3b6, type: 3} + m_Name: config_c + m_EditorClassIdentifier: + ConfigName: config c diff --git a/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset.meta b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset.meta new file mode 100644 index 00000000..a40ec65f --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/TestRes/ScriptableObject/config_c.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b389b845dd8a30b47b2b36f407447e88 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: