public IEnumerator CanUnloadAssetReference_WithAddressables() { yield return(Init()); AsyncOperationHandle handle = m_Addressables.Instantiate(AssetReferenceObjectKey); yield return(handle); Assert.IsNotNull(handle.Result as GameObject); AssetReferenceTestBehavior behavior = (handle.Result as GameObject).GetComponent <AssetReferenceTestBehavior>(); AsyncOperationHandle <GameObject> assetRefHandle = m_Addressables.Instantiate(behavior.Reference); yield return(assetRefHandle); Assert.IsNotNull(assetRefHandle.Result); string name = assetRefHandle.Result.name; Assert.IsNotNull(GameObject.Find(name)); m_Addressables.ReleaseInstance(assetRefHandle.Result); yield return(null); Assert.IsNull(GameObject.Find(name)); handle.Release(); }
static public void Setup(string testType, string pathFormat, string suffix) { #if UNITY_EDITOR var activeScenePath = EditorSceneManager.GetActiveScene().path; var RootFolder = string.Format(pathFormat, testType, suffix); Directory.CreateDirectory(RootFolder); var settings = AddressableAssetSettings.Create(RootFolder + "/Settings", "AddressableAssetSettings.Tests", false, true); var group = settings.FindGroup("TestStuff" + suffix); if (group == null) { group = settings.CreateGroup("TestStuff" + suffix, true, false, false, null, typeof(BundledAssetGroupSchema)); } settings.DefaultGroup = group; AssetDatabase.StartAssetEditing(); for (int i = 0; i < kPrefabCount; i++) { var guid = CreateAsset(RootFolder + "/test" + i + suffix + ".prefab", "testPrefab" + i); var entry = settings.CreateOrMoveEntry(guid, group, false, false); entry.address = Path.GetFileNameWithoutExtension(entry.AssetPath); entry.SetLabel(GetPrefabLabel(suffix), true, false); entry.SetLabel(GetPrefabAlternatingLabel(suffix, i), true, false); entry.SetLabel(GetPrefabUniqueLabel(suffix, i), true, false); } #if ENABLE_SCENE_TESTS for (int i = 0; i < kSceneCount; i++) { var scene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); EditorSceneManager.SaveScene(scene, RootFolder + "/test_scene" + i + suffix + ".unity"); var guid = AssetDatabase.AssetPathToGUID(scene.path); var entry = settings.CreateOrMoveEntry(guid, group, false, false); entry.address = Path.GetFileNameWithoutExtension(entry.AssetPath); } #endif string assetRefGuid = CreateAsset(RootFolder + "/testIsReference.prefab", "IsReference"); GameObject go = new GameObject("AssetReferenceBehavior"); AssetReferenceTestBehavior aRefTestBehavior = go.AddComponent <AssetReferenceTestBehavior>(); aRefTestBehavior.Reference = settings.CreateAssetReference(assetRefGuid); aRefTestBehavior.LabelReference = new AssetLabelReference() { labelString = settings.labelTable.labelNames[0] }; string hasBehaviorPath = RootFolder + "/AssetReferenceBehavior.prefab"; PrefabUtility.SaveAsPrefabAsset(go, hasBehaviorPath); settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(hasBehaviorPath), group, false, false); AssetDatabase.StopAssetEditing(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); RunBuilder(settings, testType, suffix); #if ENABLE_SCENE_TESTS EditorSceneManager.OpenScene(activeScenePath, OpenSceneMode.Single); #endif #endif }
public IEnumerator RuntimeKeyIsValid_ReturnsFalseForInValidKeys() { yield return(Init()); AsyncOperationHandle handle = m_Addressables.Instantiate(AssetReferenceObjectKey); yield return(handle); Assert.IsNotNull(handle.Result as GameObject); AssetReferenceTestBehavior behavior = (handle.Result as GameObject).GetComponent <AssetReferenceTestBehavior>(); Assert.IsFalse((behavior.InValidAssetReference as IKeyEvaluator).RuntimeKeyIsValid()); Assert.IsFalse((behavior.InvalidLabelReference as IKeyEvaluator).RuntimeKeyIsValid()); handle.Release(); }
public IEnumerator CanloadAssetReferenceSubObject() { yield return(Init()); var handle = m_Addressables.InstantiateAsync(AssetReferenceObjectKey); yield return(handle); Assert.IsNotNull(handle.Result); AssetReferenceTestBehavior behavior = handle.Result.GetComponent <AssetReferenceTestBehavior>(); AsyncOperationHandle <Object> assetRefHandle = m_Addressables.LoadAssetAsync <Object>(behavior.ReferenceWithSubObject); yield return(assetRefHandle); Assert.IsNotNull(assetRefHandle.Result); m_Addressables.Release(assetRefHandle); handle.Release(); }
internal override void Setup(AddressableAssetSettings settings, string tempAssetFolder) { AddressableAssetGroup assetReference = settings.CreateGroup("assetReferenceSamplesGroup", false, false, true, new List <AddressableAssetGroupSchema>(), typeof(BundledAssetGroupSchema)); GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube); AssetReferenceTestBehavior behavior = go.AddComponent <AssetReferenceTestBehavior>(); string hasBehaviorPath = tempAssetFolder + "/AssetReferenceBehavior.prefab"; string referencePath = tempAssetFolder + "/reference.prefab"; string guid = CreatePrefab(referencePath); behavior.Reference = settings.CreateAssetReference(guid); behavior.AssetReferenceAddress = referencePath.Replace("\\", "/"); PrefabUtility.SaveAsPrefabAsset(go, hasBehaviorPath); settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(hasBehaviorPath), assetReference, false, false).address = m_AssetReferenceObjectKey; }
public IEnumerator Samples_GetAddressFromAssetReference_ReturnsCorrectAddress() { var savedImpl = UnityEngine.AddressableAssets.Addressables.m_AddressablesInstance; UnityEngine.AddressableAssets.Addressables.m_AddressablesInstance = m_Addressables; AsyncOperationHandle assetReferenceHandle = m_Addressables.InstantiateAsync(m_AssetReferenceObjectKey); yield return(assetReferenceHandle); Assert.IsNotNull(assetReferenceHandle.Result as GameObject); AssetReferenceTestBehavior behavior = (assetReferenceHandle.Result as GameObject).GetComponent <AssetReferenceTestBehavior>(); string returnedAddress = AddressablesUtility.GetAddressFromAssetReference(behavior.Reference); Assert.AreEqual(behavior.AssetReferenceAddress, returnedAddress); m_Addressables.Release(assetReferenceHandle); UnityEngine.AddressableAssets.Addressables.m_AddressablesInstance = savedImpl; }
static public void Setup(string testType, string pathFormat, string suffix) { #if UNITY_EDITOR bool currentIgnoreState = LogAssert.ignoreFailingMessages; LogAssert.ignoreFailingMessages = true; var RootFolder = string.Format(pathFormat, testType, suffix); Directory.CreateDirectory(RootFolder); var settings = AddressableAssetSettings.Create(RootFolder + "/Settings", "AddressableAssetSettings.Tests", false, true); settings.MaxConcurrentWebRequests = kMaxWebRequestCount; var group = settings.FindGroup("TestStuff" + suffix); if (group == null) { group = settings.CreateGroup("TestStuff" + suffix, true, false, false, null, typeof(BundledAssetGroupSchema)); } group.GetSchema <BundledAssetGroupSchema>().BundleNaming = BundledAssetGroupSchema.BundleNamingStyle.OnlyHash; settings.DefaultGroup = group; for (int i = 0; i < kPrefabCount; i++) { var guid = CreateAsset(RootFolder + "/test" + i + suffix + ".prefab", "testPrefab" + i); var entry = settings.CreateOrMoveEntry(guid, group, false, false); entry.address = Path.GetFileNameWithoutExtension(entry.AssetPath); entry.SetLabel(GetPrefabLabel(suffix), true, true); entry.SetLabel(GetPrefabAlternatingLabel(suffix, i), true, true); entry.SetLabel(GetPrefabUniqueLabel(suffix, i), true, true); } var texture = new Texture2D(32, 32); var data = ImageConversion.EncodeToPNG(texture); UnityEngine.Object.DestroyImmediate(texture); AssetDatabase.GenerateUniqueAssetPath(RootFolder); var spritePath = RootFolder + "/sprite.png"; File.WriteAllBytes(spritePath, data); AssetDatabase.ImportAsset(spritePath, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate); var spriteGuid = AssetDatabase.AssetPathToGUID(spritePath); var importer = (TextureImporter)AssetImporter.GetAtPath(spritePath); importer.textureType = TextureImporterType.Sprite; importer.spriteImportMode = SpriteImportMode.Multiple; importer.spritesheet = new SpriteMetaData[] { new SpriteMetaData() { name = "topleft", pivot = Vector2.zero, rect = new Rect(0, 0, 16, 16) }, new SpriteMetaData() { name = "botright", pivot = Vector2.zero, rect = new Rect(16, 16, 16, 16) } }; importer.SaveAndReimport(); var spriteEntry = settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(spritePath), group, false, false); spriteEntry.address = "sprite"; var so = ScriptableObject.CreateInstance <UnityEngine.AddressableAssets.Tests.TestObject>(); var sub = ScriptableObject.CreateInstance <UnityEngine.AddressableAssets.Tests.TestObject>(); sub.name = "sub-shown"; var sub2 = ScriptableObject.CreateInstance <UnityEngine.AddressableAssets.Tests.TestObject>(); sub2.hideFlags |= HideFlags.HideInHierarchy; sub2.name = "sub2-hidden"; so.name = "main"; AssetDatabase.CreateAsset(so, RootFolder + "/assetWithSubObjects.asset"); AssetDatabase.AddObjectToAsset(sub, RootFolder + "/assetWithSubObjects.asset"); AssetDatabase.AddObjectToAsset(sub2, RootFolder + "/assetWithSubObjects.asset"); AssetDatabase.ImportAsset(RootFolder + "/assetWithSubObjects.asset", ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate); var assetWithSubObjectsGUID = AssetDatabase.AssetPathToGUID(RootFolder + "/assetWithSubObjects.asset"); string assetRefGuid = CreateAsset(RootFolder + "/testIsReference.prefab", "IsReference"); GameObject go = new GameObject("AssetReferenceBehavior"); AssetReferenceTestBehavior aRefTestBehavior = go.AddComponent <AssetReferenceTestBehavior>(); settings.CreateOrMoveEntry(assetWithSubObjectsGUID, settings.DefaultGroup).address = "assetWithSubObjects"; aRefTestBehavior.Reference = settings.CreateAssetReference(assetRefGuid); aRefTestBehavior.ReferenceWithSubObject = settings.CreateAssetReference(assetWithSubObjectsGUID); aRefTestBehavior.ReferenceWithSubObject.SubObjectName = "sub-shown"; aRefTestBehavior.LabelReference = new AssetLabelReference() { labelString = settings.labelTable.labelNames[0] }; string hasBehaviorPath = RootFolder + "/AssetReferenceBehavior.prefab"; PrefabUtility.SaveAsPrefabAsset(go, hasBehaviorPath); settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(hasBehaviorPath), group, false, false); //AssetDatabase.StopAssetEditing(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); RunBuilder(settings, testType, suffix); LogAssert.ignoreFailingMessages = currentIgnoreState; #endif }
static public void Setup(string testType, string pathFormat, string suffix) { try { #if UNITY_EDITOR var activeScenePath = EditorSceneManager.GetActiveScene().path; var RootFolder = string.Format(pathFormat, testType, suffix); Directory.CreateDirectory(RootFolder); var settings = AddressableAssetSettings.Create(RootFolder + "/Settings", "AddressableAssetSettings.Tests", false, true); var group = settings.FindGroup("TestStuff" + suffix); if (group == null) { group = settings.CreateGroup("TestStuff" + suffix, true, false, false, null, typeof(BundledAssetGroupSchema)); } settings.DefaultGroup = group; AssetDatabase.StartAssetEditing(); for (int i = 0; i < kPrefabCount; i++) { var guid = CreateAsset(RootFolder + "/test" + i + suffix + ".prefab", "testPrefab" + i); var entry = settings.CreateOrMoveEntry(guid, group, false, false); entry.address = Path.GetFileNameWithoutExtension(entry.AssetPath); entry.SetLabel(GetPrefabLabel(suffix), true, false); entry.SetLabel(GetPrefabAlternatingLabel(suffix, i), true, false); entry.SetLabel(GetPrefabUniqueLabel(suffix, i), true, false); } #if ENABLE_SCENE_TESTS for (int i = 0; i < kSceneCount; i++) { var scene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); EditorSceneManager.SaveScene(scene, RootFolder + "/test_scene" + i + suffix + ".unity"); var guid = AssetDatabase.AssetPathToGUID(scene.path); var entry = settings.CreateOrMoveEntry(guid, group, false, false); entry.address = Path.GetFileNameWithoutExtension(entry.AssetPath); } #endif string assetRefGuid = CreateAsset(RootFolder + "/testIsReference.prefab", "IsReference"); GameObject go = new GameObject("AssetReferenceBehavior"); AssetReferenceTestBehavior aRefTestBehavior = go.AddComponent <AssetReferenceTestBehavior>(); aRefTestBehavior.Reference = settings.CreateAssetReference(assetRefGuid); aRefTestBehavior.LabelReference = new AssetLabelReference() { labelString = settings.labelTable.labelNames[0] }; string hasBehaviorPath = RootFolder + "/AssetReferenceBehavior.prefab"; PrefabUtility.SaveAsPrefabAsset(go, hasBehaviorPath); settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(hasBehaviorPath), group, false, false); AssetDatabase.StopAssetEditing(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); var texture = new Texture2D(32, 32); var data = ImageConversion.EncodeToPNG(texture); UnityEngine.Object.DestroyImmediate(texture); AssetDatabase.GenerateUniqueAssetPath(RootFolder); var origPath = "Assets/" + GUID.Generate() + ".png"; var spritePath = RootFolder + "sprite.png"; File.WriteAllBytes(spritePath, data); AssetDatabase.ImportAsset(origPath, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); AssetDatabase.MoveAsset(origPath, spritePath); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); AssetDatabase.ImportAsset(spritePath, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate); var spriteGuid = AssetDatabase.AssetPathToGUID(spritePath); var importer = AssetImporter.GetAtPath(spritePath) as TextureImporter; importer.textureType = TextureImporterType.Sprite; importer.spriteImportMode = SpriteImportMode.Multiple; importer.spritesheet = new SpriteMetaData[] { new SpriteMetaData() { name = "topleft", pivot = Vector2.zero, rect = new Rect(0, 0, 16, 16) }, new SpriteMetaData() { name = "botright", pivot = Vector2.zero, rect = new Rect(16, 16, 16, 16) } }; importer.SaveAndReimport(); AssetDatabase.ImportAsset(spritePath, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); var spriteEntry = settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(spritePath), group, false, false); spriteEntry.address = "sprite"; RunBuilder(settings, testType, suffix); #if ENABLE_SCENE_TESTS EditorSceneManager.OpenScene(activeScenePath, OpenSceneMode.Single); #endif #endif } catch (Exception e) { Debug.LogException(e); } }