Объявление
public static bool DisplayCancelableProgressBar(string title, string info, float progress);Описание
Отображает или обновляет индикатор выполнения с кнопкой отмены.
Заголовок окна будет установлен на title
, а информация будет установлена на info
. Для прогресса должно быть установлено значение от 0,0 до 1,0, где 0 означает, что ничего не сделано, а 1,0 означает, что выполнение выполнено на 100 %.
Это полезно, когда вы выполняете длительную операцию блокировки в сценарии редактора и хотите уведомить пользователя о ходе выполнения. Используйте этот метод для длительных операций, из-за которых редактор не отвечает. Для длительных операций, выполняемых в фоновом режиме, используйте класс Progress.
Возвращаемое этой функцией значение указывает, нажал ли пользователь кнопку отмены. Вы должны остановить выполнение задачи. После отображения индикатора выполнения очистите его с помощью ClearProgressBar.
Смотрите так же: DisplayCancelableProgressBar, ClearProgressBar methods, Progress class.

using System.Threading;
using UnityEditor;
using UnityEngine;
// Показывает отменяемый индикатор выполнения в течение указанного количества секунд.
public class EditorUtilityDisplayCancelableProgressBar : EditorWindow
{
public float secs = 5f;
[MenuItem("Examples/Progress Bar Usage")]
static void Init()
{
var window = GetWindow(typeof(EditorUtilityDisplayCancelableProgressBar));
window.Show();
}
void OnGUI()
{
secs = EditorGUILayout.Slider("Time to wait:", secs, 1.0f, 20.0f);
if (GUILayout.Button("Display bar"))
{
var step = 0.1f;
for (float t = 0; t < secs; t += step)
{
if (EditorUtility.DisplayCancelableProgressBar("Cancelable", "Doing some work...", t / secs))
break;
// Normally, some computation happens here.
// This example uses Sleep.
Thread.Sleep((int)(step * 1000.0f));
}
EditorUtility.ClearProgressBar();
}
}
}