EditorUtility.DisplayCancelableProgressBar
Declaration
public static bool DisplayCancelableProgressBar(string title, string info, float progress);Описание
Отображает или обновляет строку прогресса с кнопкой отмены.
Заголовок окна установлен на title и информация устанавливает info. Прогресс должен быть установлен на значение между 0.0 и 1.0, где 0 означает, что ничего не загружено, а 1.0 означает, что загрузка завершена.
Это полезно, когда вы выполняете длительную блокирующую операцию в сценарии Редактора и хотите уведомить пользователя о ходе работы. Используйте этот метод для длительных операций, которые делают Редактор неответчивым. Для длительных операций, которые происходят в фоновом режиме, используйте Progress class instead.
Возвращаемое значение true указывает, что пользователь нажал кнопку Отмена кнопка. Когда возвращаемое значение является истинным, необходимо остановить выполняемую задачу. После отображения строки прогресса используйте EditorUtility.ClearProgressBar чтобы очистить его.
Дополнительные ресурсы: EditorUtility.DisplayProgressBar, EditorUtility.ClearProgressBar, и Progress.
Отменяемая полоса прогресса в редакторе.
using System.Threading; using UnityEditor; using UnityEngine;
// Shows a cancellable progress bar for the specified number of seconds. 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(); } } }