コード例 #1
0
        public void GetTypes_ReturnsOnly_NonAbstractSubTypes()
        {
            var types = AddressableAssetUtility.GetTypes(typeof(TestBaseClass));

            Assert.AreEqual(1, types.Count);
            Assert.AreEqual(types[0], typeof(TestSubClass));
        }
コード例 #2
0
            public override void OnGUI(Rect windowRect)
            {
                GUILayout.Space(5);
                Event evt      = Event.current;
                bool  hitEnter = evt.type == EventType.KeyDown && (evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter);

                EditorGUIUtility.labelWidth = 90;
                m_Name  = EditorGUILayout.TextField("Variable Name", m_Name);
                m_Value = EditorGUILayout.TextField("Default Value", m_Value);

                UnityEngine.GUI.enabled = m_Name.Length != 0;
                if (GUILayout.Button("Save") || hitEnter)
                {
                    if (string.IsNullOrEmpty(m_Name))
                    {
                        Debug.LogError("Variable name cannot be empty.");
                    }
                    else if (m_Name != m_Settings.profileSettings.GetUniqueProfileEntryName(m_Name))
                    {
                        Debug.LogError("Profile variable '" + m_Name + "' already exists.");
                    }
                    else
                    {
                        Undo.RecordObject(m_Settings, "Profile Variable " + m_Name + " Created");
                        m_Settings.profileSettings.CreateValue(m_Name, m_Value);
                        AddressableAssetUtility.OpenAssetIfUsingVCIntegration(m_Settings);
                        m_ProfileTreeView.Reload();
                        editorWindow.Close();
                    }
                }
            }
コード例 #3
0
 public void IsInResourcesHandlesResourcesInWrongContext()
 {
     Assert.IsFalse(AddressableAssetUtility.IsInResources("resources/"));
     Assert.IsFalse(AddressableAssetUtility.IsInResources("/resources"));
     Assert.IsFalse(AddressableAssetUtility.IsInResources("path/resourcesOther/path"));
     Assert.IsFalse(AddressableAssetUtility.IsInResources("/path/res/ources/path"));
 }
コード例 #4
0
        void SetActiveProfile(object context)
        {
            var n = context as string;

            AddressableAssetSettingsDefaultObject.Settings.activeProfileId = AddressableAssetSettingsDefaultObject.Settings.profileSettings.GetProfileId(n);
            AddressableAssetUtility.OpenAssetIfUsingVCIntegration(AddressableAssetSettingsDefaultObject.Settings);
        }
コード例 #5
0
        public void GetPackages_ReturnsUnityPackages()
        {
            var packages            = AddressableAssetUtility.GetPackages();
            var addressablesPackage = packages.FirstOrDefault(p => p.name == $"com.unity.addressables");

            Assert.IsNotNull(addressablesPackage);
        }
コード例 #6
0
 public void IsPathValidBlocksCommonStrings()
 {
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry(string.Empty));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry(CommonStrings.UnityEditorResourcePath));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry(CommonStrings.UnityDefaultResourcePath));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry(CommonStrings.UnityBuiltInExtraPath));
 }
コード例 #7
0
            protected override TreeViewItem BuildRoot()
            {
                var root = new TreeViewItem(-1, -1);

                var aaSettings = AddressableAssetSettingsDefaultObject.Settings;

                if (aaSettings == null)
                {
                    var message = "Use 'Window->Addressables' to initialize.";
                    root.AddChild(new AssetRefTreeViewItem(message.GetHashCode(), 0, message, string.Empty, string.Empty));
                }
                else
                {
                    if (!string.IsNullOrEmpty(m_NonAddressedAsset))
                    {
                        var item = new AssetRefTreeViewItem(m_NonAddressedAsset.GetHashCode(), 0, "Make Addressable - " + m_NonAddressedAsset, m_GUID, string.Empty);
                        item.icon = m_WarningIcon;
                        root.AddChild(item);
                    }
                    root.AddChild(new AssetRefTreeViewItem(AssetReferenceDrawer.noAssetString.GetHashCode(), 0, AssetReferenceDrawer.noAssetString, string.Empty, string.Empty));
                    var allAssets = new List <AddressableAssetEntry>();
                    aaSettings.GetAllAssets(allAssets, false);
                    foreach (var entry in allAssets)
                    {
                        if (!AddressableAssetUtility.IsInResources(entry.AssetPath) &&
                            m_Drawer.ValidateAsset(entry.AssetPath))
                        {
                            var child = new AssetRefTreeViewItem(entry.address.GetHashCode(), 0, entry.address, entry.guid, entry.AssetPath);
                            root.AddChild(child);
                        }
                    }
                }

                return(root);
            }
        void OnEnable()
        {
            // Single group editing
            if (targets.Length == 1)
            {
                m_AddressableAssetGroupTarget = target as AddressableAssetGroupTemplate;
            }
//            // Multi-group editing
//            if (targets.Length > 1)
//            {
//                m_AddressableAssetGroupTargets = new AddressableAssetGroupTemplate[targets.Length];
//                for (int i = 0; i < targets.Length; i++)
//                {
//                    m_AddressableAssetGroupTargets[i] = targets[i] as AddressableAssetGroupTemplate;
//                }
//                // use item with largest index as base
//                m_AddressableAssetGroupTarget = m_AddressableAssetGroupTargets[m_AddressableAssetGroupTargets.Length - 1];
//                InitializeMultiSelectGroupSchemas();
//            }

            if (m_AddressableAssetGroupTarget != null)
            {
                m_SchemaTypes  = AddressableAssetUtility.GetTypes <AddressableAssetGroupSchema>();
                m_FoldoutState = new bool[m_AddressableAssetGroupTarget.SchemaObjects.Count];
            }

            for (int i = 0; i < m_FoldoutState.Length; i++)
            {
                m_FoldoutState[i] = true;
            }
        }
コード例 #9
0
 public void IsPathValidBlocksBadExtensions()
 {
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry("Assets/file.cs"));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry("Assets/file.js"));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry("Assets/file.boo"));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry("Assets/file.exe"));
     Assert.IsFalse(AddressableAssetUtility.IsPathValidForEntry("Assets/file.dll"));
 }
コード例 #10
0
 public void GetPathAndGUIDFromTarget_FromNullObject_Fails()
 {
     Assert.IsFalse(AddressableAssetUtility.GetPathAndGUIDFromTarget(null, out var actualPath, out var actualGUID, out var actualType));
     Assert.IsEmpty(actualPath);
     Assert.IsEmpty(actualGUID);
     Assert.IsEmpty(actualGUID);
     Assert.IsNull(actualType);
 }
コード例 #11
0
        static void SetAaEntry(AddressableAssetSettings aaSettings, Object[] targets, bool create)
        {
            if (create && aaSettings.DefaultGroup.ReadOnly)
            {
                Debug.LogError("Current default group is ReadOnly.  Cannot add addressable assets to it");
                return;
            }

            Undo.RecordObject(aaSettings, "AddressableAssetSettings");

            var targetInfos = new List <TargetInfo>();

            foreach (var t in targets)
            {
                if (AddressableAssetUtility.GetPathAndGUIDFromTarget(t, out var path, out var guid, out var mainAssetType))
                {
                    targetInfos.Add(new TargetInfo()
                    {
                        Guid = guid, Path = path, MainAssetType = mainAssetType
                    });
                }
            }

            if (!create)
            {
                targetInfos.ForEach(ti =>
                {
                    AddressableAssetGroup group = aaSettings.FindAssetEntry(ti.Guid).parentGroup;
                    aaSettings.RemoveAssetEntry(ti.Guid);
                    AddressableAssetUtility.OpenAssetIfUsingVCIntegration(group);
                });
            }
            else
            {
                var resourceTargets = targetInfos.Where(ti => AddressableAssetUtility.IsInResources(ti.Path));
                var resourcePaths   = resourceTargets.Select(t => t.Path).ToList();
                var resourceGuids   = resourceTargets.Select(t => t.Guid).ToList();
                AddressableAssetUtility.SafeMoveResourcesToGroup(aaSettings, aaSettings.DefaultGroup, resourcePaths, resourceGuids);

                var entriesAdded     = new List <AddressableAssetEntry>();
                var modifiedGroups   = new HashSet <AddressableAssetGroup>();
                var otherTargetInfos = targetInfos.Except(resourceTargets);
                foreach (var info in otherTargetInfos)
                {
                    var e = aaSettings.CreateOrMoveEntry(info.Guid, aaSettings.DefaultGroup, false, false);
                    entriesAdded.Add(e);
                    modifiedGroups.Add(e.parentGroup);
                }

                foreach (var g in modifiedGroups)
                {
                    g.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entriesAdded, false, true);
                    AddressableAssetUtility.OpenAssetIfUsingVCIntegration(g);
                }

                aaSettings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entriesAdded, true, false);
            }
        }
コード例 #12
0
        public void GetPathAndGUIDFromTarget_FromPrefabObject_Fails()
        {
            var obj = GameObject.CreatePrimitive(PrimitiveType.Cube);

            Assert.IsFalse(AddressableAssetUtility.TryGetPathAndGUIDFromTarget(obj, out var actualPath, out var actualGUID));
            Assert.IsEmpty(actualPath);
            Assert.IsEmpty(actualGUID);
            Assert.IsEmpty(actualGUID);
        }
コード例 #13
0
        static List <Type> GetTypes(FieldInfo fieldInfo)
        {
            var attrs = fieldInfo.GetCustomAttributes(typeof(SerializedTypeRestrictionAttribute), false);

            if (attrs.Length == 0 || !(attrs[0] is SerializedTypeRestrictionAttribute))
            {
                return(null);
            }
            return(AddressableAssetUtility.GetTypes((attrs[0] as SerializedTypeRestrictionAttribute).type));
        }
コード例 #14
0
        public void GetPathAndGUIDFromTarget_FromPrefabAsset_ReturnsCorrectPathGUIDType()
        {
            var expectedGUID = CreateTestPrefabAsset(GetAssetPath("prefab1.prefab"), "prefab1");
            var expectedPath = AssetDatabase.GUIDToAssetPath(expectedGUID);
            var obj          = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(expectedPath);

            Assert.IsTrue(AddressableAssetUtility.GetPathAndGUIDFromTarget(obj, out var actualPath, out var actualGUID, out var actualType));
            Assert.AreEqual(expectedPath, actualPath);
            Assert.AreEqual(expectedGUID, actualGUID);
            Assert.AreEqual(typeof(GameObject), actualType);
            AssetDatabase.DeleteAsset(expectedPath);
        }
コード例 #15
0
 internal void DataSourceDropdownValueChanged(object sender, ProfileDataSourceDropdownWindow.DropdownWindowEventArgs e)
 {
     m_CustomGroupTypes[e.GroupType.GroupTypePrefix] = e.IsCustom;
     if (!e.IsCustom)
     {
         var selectedProfile = GetSelectedProfile();
         Undo.RecordObject(settings, "Variable value changed");
         settings.profileSettings.SetValue(selectedProfile.id, e.GroupType.GetName(e.GroupType.GetVariableBySuffix(AddressableAssetSettings.kBuildPath)), e.Option.BuildPath);
         settings.profileSettings.SetValue(selectedProfile.id, e.GroupType.GetName(e.GroupType.GetVariableBySuffix(AddressableAssetSettings.kLoadPath)), e.Option.LoadPath);
         AddressableAssetUtility.OpenAssetIfUsingVCIntegration(settings);
     }
 }
コード例 #16
0
        static void SetAaEntry(AddressableAssetSettings aaSettings, Object[] targets, bool create)
        {
            if (create && aaSettings.DefaultGroup.ReadOnly)
            {
                Debug.LogError("Current default group is ReadOnly.  Cannot add addressable assets to it");
                return;
            }

            Undo.RecordObject(aaSettings, "AddressableAssetSettings");
            string path;
            var    guid = string.Empty;
            //if (create || EditorUtility.DisplayDialog("Remove Addressable Asset Entries", "Do you want to remove Addressable Asset entries for " + targets.Length + " items?", "Yes", "Cancel"))
            {
                var entriesAdded   = new List <AddressableAssetEntry>();
                var modifiedGroups = new HashSet <AddressableAssetGroup>();

                Type mainAssetType;
                foreach (var t in targets)
                {
                    if (AddressableAssetUtility.GetPathAndGUIDFromTarget(t, out path, ref guid, out mainAssetType))
                    {
                        if (create)
                        {
                            if (AddressableAssetUtility.IsInResources(path))
                            {
                                AddressableAssetUtility.SafeMoveResourcesToGroup(aaSettings, aaSettings.DefaultGroup, new List <string> {
                                    path
                                });
                            }
                            else
                            {
                                var e = aaSettings.CreateOrMoveEntry(guid, aaSettings.DefaultGroup, false, false);
                                entriesAdded.Add(e);
                                modifiedGroups.Add(e.parentGroup);
                            }
                        }
                        else
                        {
                            aaSettings.RemoveAssetEntry(guid);
                        }
                    }
                }

                if (create)
                {
                    foreach (var g in modifiedGroups)
                    {
                        g.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entriesAdded, false, true);
                    }
                    aaSettings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entriesAdded, true, false);
                }
            }
        }
コード例 #17
0
        public void GetPathAndGUIDFromTarget_FromPrefabAsset_ReturnsCorrectPathGUIDType()
        {
            var expectedGUID = CreateTestPrefabAsset(GetAssetPath("prefab1.prefab"), "prefab1");
            var expectedPath = AssetDatabase.GUIDToAssetPath(expectedGUID);
            var obj          = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(expectedPath);

            Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry(expectedPath), $"Asset is not a valid Addressable Entry path : {expectedPath}");
            Assert.IsTrue(AddressableAssetUtility.TryGetPathAndGUIDFromTarget(obj, out var actualPath, out var actualGUID), "Could not get Path and Guid from Target at expectedPath " + expectedPath);
            Assert.AreEqual(expectedPath, actualPath);
            Assert.AreEqual(expectedGUID, actualGUID);
            AssetDatabase.DeleteAsset(expectedPath);
        }
コード例 #18
0
        void UseProfile(object context)
        {
            List <TreeViewItem> selectedNodes = context as List <TreeViewItem>;

            if (selectedNodes != null && selectedNodes.Count >= 1)
            {
                Undo.RecordObject(m_Window.settings, "Active Profile Changed");
                var    item            = selectedNodes.First();
                string activeProfileId = m_TreeIndexToBuildProfileMap[item.id].id;
                m_Window.settings.activeProfileId = activeProfileId;
                AddressableAssetUtility.OpenAssetIfUsingVCIntegration(m_Window.settings);
            }
        }
コード例 #19
0
        internal void OfferToConvert()
        {
            var bundleList = AssetDatabase.GetAllAssetBundleNames();

            if (EditorUtility.DisplayDialog("Legacy Bundles Detected", "We have detected the use of legacy bundles in this project.  Would you like to auto-convert those into Addressables? \nThis will take each asset bundle you have defined (we have detected " + bundleList.Length + " bundles), create an Addressables group with a matching name, then move all assets from those bundles into corresponding groups.  This will remove the asset bundle assignment from all assets, and remove all asset bundle definitions from this project.  This cannot be undone.", "Convert", "Ignore"))
            {
                AddressableAssetUtility.ConvertAssetBundlesToAddressables();
            }
            else
            {
                m_IgnoreLegacyBundles = true;
            }
        }
コード例 #20
0
 public void IsPathValidAllowsBasicTypes()
 {
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.asset"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.png"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.bin"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.txt"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.prefab"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.mat"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.wav"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.jpg"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.avi"));
     Assert.IsTrue(AddressableAssetUtility.IsPathValidForEntry("Assets/file.controller"));
 }
コード例 #21
0
        /// <summary>
        /// Stops the given <see cref="IHostingService"/>, unregisters callbacks, and removes it from management. This
        /// function does nothing if the service is not being managed by this <see cref="HostingServicesManager"/>
        /// </summary>
        /// <param name="svc"></param>
        public void RemoveHostingService(IHostingService svc)
        {
            if (!m_HostingServiceInfoMap.ContainsKey(svc))
            {
                return;
            }

            svc.StopHostingService();
            m_Settings.profileSettings.UnregisterProfileStringEvaluationFunc(svc.EvaluateProfileString);
            m_HostingServiceInfoMap.Remove(svc);
            m_Settings.SetDirty(AddressableAssetSettings.ModificationEvent.HostingServicesManagerModified, this, true, true);
            AddressableAssetUtility.OpenAssetIfUsingVCIntegration(m_Settings);
        }
 bool SafeMoveResourcesToGroup(AddressableAssetGroup targetGroup, List<AssetEntryTreeViewItem> itemList)
 {
     var guids = new List<string>();
     var paths = new List<string>();
     foreach (AssetEntryTreeViewItem child in itemList)
     {
         if (child != null)
         {
             guids.Add(child.entry.guid);
             paths.Add(child.entry.AssetPath);
         }
     }
     return AddressableAssetUtility.SafeMoveResourcesToGroup(m_Editor.settings, targetGroup, paths, guids);
 }
コード例 #23
0
        void OnEnable()
        {
            m_GroupTarget = target as AddressableAssetGroup;
            if (m_GroupTarget != null)
            {
                m_GroupTarget.Settings.OnModification += OnSettingsModification;
                m_SchemaTypes  = AddressableAssetUtility.GetTypes <AddressableAssetGroupSchema>();
                m_FoldoutState = new bool[m_GroupTarget.Schemas.Count];
            }

            for (int i = 0; i < m_FoldoutState.Length; i++)
            {
                m_FoldoutState[i] = true;
            }
        }
コード例 #24
0
        void DeletePathPair(ProfileGroupType groupType)
        {
            var buildPathData = settings.profileSettings.GetProfileDataByName(groupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kBuildPath);
            var loadPathData  = settings.profileSettings.GetProfileDataByName(groupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kLoadPath);

            if (loadPathData == default(AddressableAssetProfileSettings.ProfileIdData) || buildPathData == default(AddressableAssetProfileSettings.ProfileIdData))
            {
                Debug.LogError("An error occured while getting one of the path pair variables.");
                return;
            }
            Undo.RecordObject(settings, "Profile Variable Deleted");
            settings.profileSettings.RemoveValue(buildPathData.Id);
            settings.profileSettings.RemoveValue(loadPathData.Id);
            AddressableAssetUtility.OpenAssetIfUsingVCIntegration(settings);
        }
コード例 #25
0
        void OnEnable()
        {
            m_AddressableAssetGroupTarget = target as AddressableAssetGroupTemplate;

            if (m_AddressableAssetGroupTarget != null)
            {
                m_SchemaTypes  = AddressableAssetUtility.GetTypes <AddressableAssetGroupSchema>();
                m_FoldoutState = new bool[m_AddressableAssetGroupTarget.SchemaObjects.Count];
            }

            for (int i = 0; i < m_FoldoutState.Length; i++)
            {
                m_FoldoutState[i] = true;
            }
        }
コード例 #26
0
            public override void OnGUI(Rect windowRect)
            {
                GUILayout.BeginArea(windowRect);

                Event evt      = Event.current;
                bool  hitEnter = evt.type == EventType.KeyDown && (evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter);

                m_NewName = GUILayout.TextField(m_NewName);
                if (GUILayout.Button("Save") || hitEnter)
                {
                    if (string.IsNullOrEmpty(m_NewName))
                    {
                        Debug.LogError("Path pair prefix cannot be empty.");
                    }
                    else if (m_NewName == m_ProfileGroupType.GroupTypePrefix)
                    {
                        editorWindow.Close();
                    }
                    else if (VariableWithNewPrefixAlreadyExists())
                    {
                        Debug.LogError("One or more build or load path variables with prefix '" + m_NewName + "' already exist. Please rename them or pick a different prefix.");
                    }
                    else if (m_NewName.Trim().Length == 0) // new name cannot only contain spaces
                    {
                        Debug.LogError("Path pair prefix cannot be only spaces");
                    }
                    else
                    {
                        var loadPathVariableData  = m_Settings.profileSettings.GetProfileDataByName(m_ProfileGroupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kLoadPath);
                        var buildPathVariableData = m_Settings.profileSettings.GetProfileDataByName(m_ProfileGroupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kBuildPath);
                        if (loadPathVariableData == default(AddressableAssetProfileSettings.ProfileIdData) || buildPathVariableData == default(AddressableAssetProfileSettings.ProfileIdData))
                        {
                            Debug.LogError("Valid path pair to rename not found.");
                        }
                        else
                        {
                            Undo.RecordObject(m_Settings, "Path pair prefix Renamed");
                            m_ProfileGroupType.GroupTypePrefix = m_NewName;
                            loadPathVariableData.SetName(m_ProfileGroupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kLoadPath, m_Settings.profileSettings);
                            buildPathVariableData.SetName(m_ProfileGroupType.GroupTypePrefix + ProfileGroupType.k_PrefixSeparator + AddressableAssetSettings.kBuildPath, m_Settings.profileSettings);
                            AddressableAssetUtility.OpenAssetIfUsingVCIntegration(m_Settings, true);
                            editorWindow.Close();
                        }
                    }
                }
                GUILayout.EndArea();
            }
コード例 #27
0
        public void GetMD5Hash_ReturnsValidMD5Hash()
        {
            const string FilePath     = "test_file";
            var          file         = File.Create(FilePath);
            var          content      = "12345";
            var          contentBytes = Encoding.ASCII.GetBytes(content);

            file.Write(contentBytes, 0, contentBytes.Length);
            file.Close();

            var hashString = AddressableAssetUtility.GetMd5Hash(FilePath);

            File.Delete(FilePath);

            Assert.NotNull(hashString);
            Assert.AreEqual("827ccb0eea8a706c4c34a16891f84e7b", hashString);
        }
コード例 #28
0
        public void SafeMoveResourcesToGroup_ResourcesMovedToNewFolderAndGroup()
        {
            var folderPath = AssetDatabase.GUIDToAssetPath(AssetDatabase.CreateFolder(TestFolder, "Resources"));
            var g1         = CreateTestPrefabAsset(folderPath + "/p1.prefab", "p1");
            var g2         = CreateTestPrefabAsset(folderPath + "/p2.prefab", "p2");

            Assert.AreEqual(0, Settings.DefaultGroup.entries.Count);
            var result = AddressableAssetUtility.SafeMoveResourcesToGroup(Settings, Settings.DefaultGroup, new List <string> {
                AssetDatabase.GUIDToAssetPath(g1), AssetDatabase.GUIDToAssetPath(g2)
            }, null, false);

            Assert.IsTrue(result);
            Assert.AreEqual(2, Settings.DefaultGroup.entries.Count);
            var ap = $"{TestFolder}_Resources_moved";

            Assert.IsTrue(AssetDatabase.IsValidFolder($"{TestFolder}/Resources_moved"));
        }
コード例 #29
0
        public void AreConvertableEditorAssemblyTypesConverted()
        {
            Assembly asm = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.FullName == "UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
            var      conversionMapping = new Dictionary <Type, Type>()
            {
                { asm.GetType("UnityEditor.Audio.AudioMixerGroupController"), typeof(AudioMixerGroup) },
                { asm.GetType("UnityEditor.Audio.AudioMixerController"), typeof(AudioMixer) },
                { typeof(UnityEditor.SceneAsset), typeof(UnityEngine.ResourceManagement.ResourceProviders.SceneInstance) },
                { typeof(UnityEditor.Animations.AnimatorController), typeof(RuntimeAnimatorController) }
            };

            foreach (Type key in conversionMapping.Keys)
            {
                var type = AddressableAssetUtility.MapEditorTypeToRuntimeType(key, false);
                Assert.AreEqual(type, conversionMapping[key]);
            }
        }
コード例 #30
0
        //Creates a new BuildProfile and reloads the ProfilesPane
        void NewProfile()
        {
            var uniqueProfileName = settings.profileSettings.GetUniqueProfileName("New Profile");

            if (!string.IsNullOrEmpty(uniqueProfileName))
            {
                Undo.RecordObject(settings, "New Profile Created");
                //Either copy values from the selected profile, or if there is no selected profile, copy from the default
                string idToCopyFrom = GetSelectedProfile() != null
                    ? GetSelectedProfile().id
                    : settings.profileSettings.profiles[0].id;

                settings.profileSettings.AddProfile(uniqueProfileName, idToCopyFrom);
                AddressableAssetUtility.OpenAssetIfUsingVCIntegration(settings);
                m_ProfileTreeView.Reload();
            }
        }