コード例 #1
0
        public override void FixIssues(AddressableAssetSettings settings)
        {
            if (m_implicitAssets == null)
            {
                CheckForDuplicateDependencies(settings);
            }

            if (m_implicitAssets.Count == 0)
            {
                return;
            }

            var group = AddressablesUtility.GetOrCreateGroup(BuildScenesPreprocessor.ScenesDependenciesAddressablesGroupName);

            group.GetSchema <ContentUpdateGroupSchema>().StaticContent = true;

            foreach (var asset in m_implicitAssets)
            {
                var guidString = asset.ToString();
                var entry      = settings.CreateOrMoveEntry(guidString, group, false, false);
                entry.address = $"{Path.GetFileNameWithoutExtension(AssetDatabase.GUIDToAssetPath(guidString))}_{guidString}";
            }

            settings.SetDirty(AddressableAssetSettings.ModificationEvent.BatchModification, null, true, true);
        }
        internal static void SetupAddressableScenes(BuildTarget target)
        {
            if (BuildConfigurationSettings.Instance.HasValidConfiguration == false)
            {
                return;
            }

            InitializeAddressablesSettings();
            // TODO: Don't create a group until we checked that even 1 scene is Addressable
            var group         = AddressablesUtility.GetOrCreateGroup(ScenesAddressablesGroupName);
            var configuration = BuildConfigurationSettings.Instance.Configuration;

            AddAddressableScenesIntoGroup(configuration.GetAddressableDefaultScenes(), group);

            foreach (var platformsConfiguration in configuration.Platforms)
            {
                var editorBuildTargets = platformsConfiguration.GetBuildTargetsEditor();
                if (editorBuildTargets.Contains(target))
                {
                    AddAddressableScenesIntoGroup(platformsConfiguration.GetAddressableScenes(), group);
                    break;
                }
            }

            if (group.entries.Count > 0)
            {
                var rule    = AnalyzeSystemHelper.FindRule <FindScenesDuplicateDependencies>();
                var results = AnalyzeSystemHelper.RefreshRule(rule);

                bool fixNeeded = false;
                foreach (var result in results)
                {
                    if (result.severity == MessageType.Error || result.severity == MessageType.Warning)
                    {
                        fixNeeded = true;
                        break;
                    }
                }

                if (fixNeeded)
                {
                    AnalyzeSystemHelper.FixIssues(rule);
                }
                AnalyzeSystemHelper.ClearAnalysis(rule);

                s_BuildAddressablesImpl.Invoke();
            }
            else
            {
                AddressableAssetSettingsDefaultObject.Settings.RemoveGroup(group);
            }
            BuildConfigurationSettings.Instance.Configuration.InitializeBuildData(target);
            EditorUtility.SetDirty(BuildConfigurationSettings.Instance);
            AssetDatabase.SaveAssets();
        }