Unity 6.3
0 онлайн 7 гостей 3 в системе
Вход

Progress

класс в UnityEditor

Описание

Вспомогательный класс Progress сообщает Unity о ходе выполнения асинхронных задач.

Вспомогательный класс Progress позволяет сообщать о ходе выполнения асинхронных задач несколькими способами. Вот пример задачи, которая выполняется в EditorApplication.update цикла и отчетов о ходе работы:

using System.Collections;
using UnityEditor;

class ProgressReport_EditorUpdate { static IEnumerator s_CurrentEnumerator;

[MenuItem("Examples/ProgressReport/EditorUpdate")] static void RunEditorUpdate() { if (s_CurrentEnumerator == null) { s_CurrentEnumerator = RunTaskWithReport(); } EditorApplication.update -= RunTaskOnUpdate; EditorApplication.update += RunTaskOnUpdate; }

static void RunTaskOnUpdate() { if (s_CurrentEnumerator == null) { return; }

// Execute one step of the task var atEnd = !s_CurrentEnumerator.MoveNext();

// If there is nothing more to do, remove the update callback if (atEnd) { s_CurrentEnumerator = null; EditorApplication.update -= RunTaskOnUpdate; } }

static IEnumerator RunTaskWithReport() { // Create a new progress indicator int progressId = Progress.Start("Running one task");

// Report the progress status at anytime for (int frame = 0; frame <= 1000; ++frame) { string description; if (frame < 250) description = "First part of the task"; else if (frame < 750) description = "Second part of the task"; else description = "Last part of the task"; Progress.Report(progressId, frame / 1000.0f, description);

// Do your computation that you want to report progress on // ... yield return null; }

// The task is finished. Remove the associated progress indicator. Progress.Remove(progressId); } }

Вот еще один пример задания, которое выполняется в отдельном потоке и сообщает о ходе выполнения:

using System.Threading;
using System.Threading.Tasks;
using UnityEditor;

class ProgressReport_Threaded { [MenuItem("Examples/ProgressReport/Threaded")] static void RunThreaded() { Task.Run(RunTaskWithReport); }

static void RunTaskWithReport() { // Create a new progress indicator int progressId = Progress.Start("Running one task");

// Report the progress status at anytime for (int frame = 0; frame <= 1000; ++frame) { string description; if (frame < 250) description = "First part of the task"; else if (frame < 750) description = "Second part of the task"; else description = "Last part of the task"; Progress.Report(progressId, frame / 1000.0f, description);

// Do your computation that you want to report progress on ComputeSlowStep(); }

// The task is finished. Remove the associated progress indicator. Progress.Remove(progressId); }

static void ComputeSlowStep() { // Simulate a slow computation with a 1 millisecond sleep Thread.Sleep(1); } }

Статические свойства

Свойство Описание
globalProgressВозвращает глобальный средний прогресс всех запущенных заданий.
globalRemainingTimeВозвращает максимальное время, оставшееся для всех выполняемых индикаторов прогресса.
runningВозвращает true, если есть хотя бы один работающий индикатор прогресса, false в противном случае.

Статические методы

Метод Описание
CancelОтменяет работающий индикатор прогресса и вызывает обратный вызов cancel для связанной задачи.
ClearRemainingTimeСброс вычисления оставшегося времени для индикатора прогресса.
EnumerateItemsВозвращает перечислитель для цикла по всем показателям прогресса.
ExistsПроверяет наличие индикатора прогресса с указанным ID.
FinishПомечает показатель прогресса как завершенный.
GetCountПолучает число доступных показателей прогресса.
GetCountPerStatusДля каждого доступного состояния получает число показателей прогресса с этим состоянием.
GetCurrentStepПолучает текущий шаг для показателя прогресса.
GetDescriptionПолучить описание индикатора прогресса.
GetEndDateTimeПолучает метку времени завершения работы индикатора прогресса.
GetIdНаходит уникальный ID индикатора прогресса, используя его индекс в наборе всех доступных индикаторов прогресса.
GetNameПолучает имя индикатора прогресса.
GetOptionsПолучает параметры, указанные при запуске индикатора прогресса.
GetParentIdПолучает уникальный ID родительского индикатора прогресса, если таковой существует.
GetPriorityПолучает приоритет индикатора прогресса.
GetProgressПолучает прогресс индикатора прогресса.
GetProgressByIdПолучает сведения об индикаторе прогресса.
GetRemainingTimeПолучает оставшееся время индикатора прогресса в секундах.
GetRunningProgressCountПолучает число активных или запущенных индикаторов прогресса.
GetStartDateTimeПолучает метку времени, когда был запущен индикатор прогресса.
GetStatusПолучает состояние индикатора прогресса.
GetStepLabelПолучить метку, отображающую шаги индикатора прогресса.
GetTimeDisplayModeПолучить режим отображения времени индикатора прогресса.
GetTotalStepsПолучает общее число шагов от начала до конца для показателя прогресса.
GetUpdateDateTimeПолучает время последнего изменения или завершения индикатора прогресса.
IsCancellableУказывает, можно ли отменить задачу, связанную с индикатором выполнения.
IsPausableУказывает, можно ли приостановить выполнение задачи индикатора прогресса.
PauseПриостанавливает работающий индикатор прогресса и вызывает обратный вызов pause для его задачи.
RegisterCancelCallbackРегистрирует обратный вызов, который вызывается, когда пользователь запрашивает отмену связанной задачи выполняемого индикатора прогресса.
RegisterPauseCallbackРегистрирует обратный вызов, который вызывается, когда пользователь запрашивает приостановку или возобновление выполняемой задачи индикатора прогресса.
RemoveЗавершение и удаление активного индикатора прогресса.
ReportОтчет о текущем состоянии выполняемого индикатора прогресса.
ResumeВозобновляет приостановленный индикатор прогресса и вызывает обратный вызов паузы для связанной задачи.
SetDescriptionЗадает описание индикатора прогресса. Чтобы очистить описание, передайте null.
SetPriorityЗадает приоритет индикатора прогресса.
SetRemainingTimeЗадает оставшееся время для индикатора прогресса в секундах.
SetStepLabelЗадает метку, отображающую шаги индикатора прогресса.
SetTimeDisplayModeУстанавливает режим отображения времени индикатора прогресса.
ShowDetailsОткрывает окно прогресса фоновых задач.
StartЭтот метод запускает новый показатель прогресса.
UnregisterCancelCallbackОтменяет регистрацию ранее зарегистрированного обратного вызова отмены прогресса.
UnregisterPauseCallbackОтменяет регистрацию ранее зарегистрированного обратного вызова паузы прогресса.

Мероприятия

Мероприятие Описание
addedСобытие, возникающее при запуске нового показателя прогресса.
removedСобытие, возникающее при удалении показателя прогресса.
updatedСобытие, возникающее при обновлении состояния индикатора прогресса.