Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public bool Build();

Возвращает

bool Возвращает true, если сборка запущена. Возвращает false, если сборка не была запущена из-за того, что редактор в данный момент компилирует скрипты в папке Assets.

Описание

Запускает сборку сборки.

Во время сборки маленький значок хода выполнения в правом нижнем углу главного окна Unity будет вращаться, и EditorApplication.isCompiling вернет значение true.

Используйте AssemblyBuilder.buildStarted и AssemblyBuilder.buildFinished, чтобы получать уведомления о завершении сборки. началось и закончилось.

Смотрите так же: AssemblyBuilder.buildStarted, AssemblyBuilder.buildFinished, AssemblyBuilder.status.

using System.IO; using System.Linq; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; public class AssembyBuilderExample { [MenuItem("AssemblyBuilder Example/Build Assembly Async")] public static void BuildAssemblyAsync() { BuildAssembly(false); } [MenuItem("AssemblyBuilder Example/Build Assembly Sync")] public static void BuildAssemblySync() { BuildAssembly(true); } static void BuildAssembly(bool wait) { var scripts = new[] { "Temp/MyAssembly/MyScript1.cs", "Temp/MyAssembly/MyScript2.cs" }; var outputAssembly = "Temp/MyAssembly/MyAssembly.dll"; var assemblyProjectPath = "Assets/MyAssembly.dll"; Directory.CreateDirectory("Temp/MyAssembly"); // Создаем скрипты foreach (var scriptPath in scripts) { var scriptName = Path.GetFileNameWithoutExtension(scriptPath); File.WriteAllText(scriptPath, string.Format("using UnityEngine; public class {0} : MonoBehaviour {{ void Start() {{ Debug.Log(\"{0}\"); }} }}", scriptName)); } var assemblyBuilder = new AssemblyBuilder(outputAssembly, scripts); // Исключить ссылку на копию сборки в папке Assets, если таковая имеется. assemblyBuilder.excludeReferences = new string[] { assemblyProjectPath }; // Вызывается в основном потоке assemblyBuilder.buildStarted += delegate(string assemblyPath) { Debug.LogFormat("Assembly build started for {0}", assemblyPath); }; // Вызывается в основном потоке assemblyBuilder.buildFinished += delegate(string assemblyPath, CompilerMessage[] compilerMessages) { var errorCount = compilerMessages.Count(m => m.type == CompilerMessageType.Error); var warningCount = compilerMessages.Count(m => m.type == CompilerMessageType.Warning); Debug.LogFormat("Assembly build finished for {0}", assemblyPath); Debug.LogFormat("Warnings: {0} - Errors: {0}", errorCount, warningCount); if(errorCount == 0) { File.Copy(outputAssembly, assemblyProjectPath, true); AssetDatabase.ImportAsset(assemblyProjectPath); } }; // Start build of assembly if(!assemblyBuilder.Build()) { Debug.LogErrorFormat("Failed to start build of assembly {0}!", assemblyBuilder.assemblyPath); return; } if(wait) { while(assemblyBuilder.status != AssemblyBuilderStatus.Finished) System.Threading.Thread.Sleep(10); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3