using System.Linq; using UnityEngine; using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; namespace Unity.MLAgents.Editor { internal class MLAgentsSettingsBuildProvider : IPreprocessBuildWithReport, IPostprocessBuildWithReport { public int callbackOrder => 0; public void OnPreprocessBuild(BuildReport report) { if (!EditorUtility.IsPersistent(MLAgentsSettingsManager.Settings)) return; var preloadedAssets = PlayerSettings.GetPreloadedAssets().ToList(); if (!preloadedAssets.Contains(MLAgentsSettingsManager.Settings)) { preloadedAssets.Add(MLAgentsSettingsManager.Settings); PlayerSettings.SetPreloadedAssets(preloadedAssets.ToArray()); } } public void OnPostprocessBuild(BuildReport report) { var preloadedAssets = PlayerSettings.GetPreloadedAssets().ToList(); if (preloadedAssets.Contains(MLAgentsSettingsManager.Settings)) { preloadedAssets.Remove(MLAgentsSettingsManager.Settings); PlayerSettings.SetPreloadedAssets(preloadedAssets.ToArray()); } } } }