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;
            }
        }
Example #2
0
        // Start is called before the first frame update
        /// <summary>
        /// 创建寻找指导名字的group
        /// 当autoCreate为true时候不存在就创建
        /// </summary>
        /// <param name="groupName"></param>
        /// <param name="Create"></param>
        /// <returns></returns>
        public static AddressableAssetGroup FindGroup(string groupName, AddressableAssetGroupTemplate groupTemplate = null)
        {
            var setting = LoadAASSetting();
            var group   = setting.FindGroup(groupName);

            if (group == null && groupTemplate != null)
            {
                group = setting.CreateGroup(groupName, false, false, true, null, groupTemplate.GetTypes());
                groupTemplate.ApplyToAddressableAssetGroup(group);
            }
            return(group);
        }
Example #3
0
        private AddressableAssetGroup CreateGroup <TSchemaType>(string groupName, AddressableAssetGroupTemplate groupTemplate)
        {
            var group = AssetSettings.CreateGroup(groupName, false, false, false, new List <AddressableAssetGroupSchema> {
                AssetSettings.DefaultGroup.Schemas[0]
            }, typeof(TSchemaType));

            if (groupTemplate != null)
            {
                groupTemplate.ApplyToAddressableAssetGroup(group);
            }

            return(group);
        }
Example #4
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;
            }
        }
Example #5
0
        private void OnGroupTemplateChanged(AddressableAssetGroupTemplate newValue)
        {
            var oldGuid = _settingsService.GetState().GroupTemplateGuid.Value;

            _history.Register($"Update {nameof(_window.GroupTemplate)}",
                              () =>
            {
                var assetPath = AssetDatabase.GetAssetPath(newValue);
                var newGuid   = AssetDatabase.AssetPathToGUID(assetPath);
                _settingsService.UpdateSetting(defaultGroupTemplateGuid: newGuid ?? string.Empty);
                _settingsService.Save();
                if (DisplayReprocessConfirmationDialog(nameof(ReadOnlySetting.GroupTemplateGuid)))
                {
                    _assetProcessService.ReprocessAllAssetsInAddressablesFolder(true);
                }
                else
                {
                    _settingsService.UpdateSetting(defaultGroupTemplateGuid: oldGuid ?? string.Empty);
                    _settingsService.Save();
                }
            },
                              () =>
            {
                var assetPath = AssetDatabase.GetAssetPath(newValue);
                var newGuid   = AssetDatabase.AssetPathToGUID(assetPath);
                _settingsService.UpdateSetting(defaultGroupTemplateGuid: oldGuid ?? string.Empty);
                _settingsService.Save();
                if (DisplayReprocessConfirmationDialog(nameof(ReadOnlySetting.GroupTemplateGuid)))
                {
                    _assetProcessService.ReprocessAllAssetsInAddressablesFolder(true);
                }
                else
                {
                    _settingsService.UpdateSetting(defaultGroupTemplateGuid: newGuid ?? string.Empty);
                    _settingsService.Save();
                }
            });
        }
Example #6
0
 public AddressableAssetGroup CreateGroupIfNotExists(string groupName, AddressableAssetGroupTemplate groupTemplate) => Group =
     TryGetGroup(groupName, out var group) ? group : CreateGroup <BundledAssetGroupSchema>(groupName, groupTemplate);
Example #7
0
        public override void FixIssues(AddressableAssetSettings settings)
        {
            // Load template used for creating new groups

            var groupTemplates = settings.GroupTemplateObjects;
            AddressableAssetGroupTemplate foundTemplate = null;

            foreach (var template in groupTemplates)
            {
                if (template.name == templateToUse)
                {
                    foundTemplate = template as AddressableAssetGroupTemplate;
                    break;
                }
            }

            if (foundTemplate == null)
            {
                Debug.Log("Group template \"" + templateToUse + "\" not found. Aborting!");
                return;
            }

            // Create groups

            foreach (var groupName in groupsToCreate)
            {
                // I don't know enough about schemas, so schemasToCopy is set to null here.
                AddressableAssetGroup newGroup = settings.CreateGroup(groupName, false, false, true, null, foundTemplate.GetTypes());
                foundTemplate.ApplyToAddressableAssetGroup(newGroup);
            }

            // Remove groups

            foreach (var groupName in groupsToRemove)
            {
                foreach (var group in settings.groups)
                {
                    if (group.name == groupName)
                    {
                        settings.RemoveGroup(group);
                        break;
                    }
                }
            }

            // Collect current group names

            Dictionary <string, AddressableAssetGroup> groups = new Dictionary <string, AddressableAssetGroup>();

            foreach (var group in settings.groups)
            {
                groups.Add(group.name, group);
            }

            // Create and remove assets

            foreach (var action in assetActions)
            {
                if (!groups.ContainsKey(action.inGroup))
                {
                    continue;
                }

                if (action.create)
                {
                    AddressableAssetEntry entry = settings.CreateOrMoveEntry(action.assetGuid, groups[action.inGroup]);
                    entry.SetAddress(action.addressablePath);
                }
                else
                {
                    AddressableAssetEntry entry = settings.FindAssetEntry(action.assetGuid);
                    if (entry != null)
                    {
                        settings.RemoveAssetEntry(action.assetGuid);
                    }
                    else
                    {
                        Debug.Log("Asset guid didn't produce an entry: " + action.assetGuid);
                    }
                }
            }

            ClearAnalysis();
            ClearOurData();
        }
Example #8
0
    /// <summary>
    /// 创新新的资源条目,并将添加到新的组中
    /// </summary>
    /// <param name="setting"></param>
    /// <param name="groupTemplete"></param>
    /// <param name="assetPath"></param>
    /// <returns></returns>
    static AddressableAssetEntry CreateEntryToNewGroup(AddressableAssetSettings setting, AddressableAssetGroupTemplate groupTemplete, string assetPath)
    {
        string guid  = AssetDatabase.AssetPathToGUID(assetPath);
        var    entry = setting.FindAssetEntry(guid);

        if (entry != null)
        {
            return(entry);
        }

        var newGroup = setting.CreateGroup(assetPath, false, false, true, null, groupTemplete.GetTypes());

        groupTemplete.ApplyToAddressableAssetGroup(newGroup);

        var entryToAdd = setting.CreateOrMoveEntry(guid, newGroup, false, false);

        newGroup.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entryToAdd, false, true);
        setting.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entryToAdd, true, false);

        return(entryToAdd);
    }
Example #9
0
    /// <summary>
    /// 为指定的资源创建相应的组
    /// </summary>
    /// <param name="assetPath"></param>
    /// <param name="setting"></param>
    /// <param name="groupTemplete"></param>
    /// <returns></returns>
    static AddressableAssetEntry CreateGroupForAsset(string assetPath, AddressableAssetSettings setting, AddressableAssetGroupTemplate groupTemplete)
    {
        string guid  = AssetDatabase.AssetPathToGUID(assetPath);
        var    entry = setting.FindAssetEntry(guid);

        if (entry != null)
        {
            var group = entry.parentGroup;
            groupTemplete.ApplyToAddressableAssetGroup(group);
        }
        else
        {
            entry = CreateEntryToNewGroup(setting, groupTemplete, assetPath);
        }
        return(entry);
    }