Объявление
public static bool SwitchActiveBuildTargetAsync(BuildTargetGroup targetGroup, BuildTarget target);Параметры
targetGroup | Целевая платформа сборки. |
target | Создайте целевую группу. |
Возвращает
bool true, если цель сборки была успешно переключена, в противном случае — false(например, если проверка лицензии не удалась, файлы отсутствуют или если пользователь отменил операцию через пользовательский интерфейс).
Описание
Выберает новую цель сборки, которая будет активна во время следующего обновления редактора.
Эта функция переключается на переданную цель сборки в качестве активной сборки во время следующего обновления редактора. Это имеет тот же эффект, что и изменение цели сборки в диалоговом окне Build Player в редакторе.
Все файлы сценариев и активы, на которые влияют текущие настройки платформы, перекомпилируются или повторно импортируются при следующем обновлении редактора, когда вы изменяете текущую активную цель сборки, которую возвращает эта функция. См. раздел SwitchActiveBuildTarget о том, как немедленно импортировать активы.
Если данная цель является автономной целью, вызов SwitchActiveBuildTarget также повлияет на EditorUserBuildSettings.selectedStandaloneTarget.
Примечание. Эта функция недоступна при запуске редактора в пакетном режиме, поскольку цель сборки требует перекомпиляции кода сценария для данной цели, что невозможно сделать во время выполнения вашего кода сценария. Это не проблема в редакторе, так как операция отложена. Однако пакетный режим немедленно выйдет после выполнения назначенного кода скрипта. Используйте переключатель командной строки buildTarget, чтобы указать цель сборки из пакетного режима.
using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
public class SwitchPlatformExample : IActiveBuildTargetChanged
{
[MenuItem("Example/Switch Platform")]
public static void PerformSwitch()
{
// Switch to Windows standalone build.
EditorUserBuildSettings.SwitchActiveBuildTargetAsync(BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows);
}
public int callbackOrder { get { return 0; } }
public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget)
{
Debug.Log("Active platform is now " + newTarget);
}
}