EditorUtility.DisplayCancelableProgressBar

Switch to Manual
public static bool DisplayCancelableProgressBar (string title, string info, float progress);

Description

显示或更新含有 Cancel 按钮的进度条。

窗口标题将设置为 /title/,信息将设置为 /info/。 进度应设置为 0.0 和 1.0 之间的一个值,0 表示一点儿也没有完成,1.0 表示完成 100%。

如果您在编辑器脚本或向导中执行任何冗长的运算 ,并希望通知用户相应进度,这非常有用。

返回此函数的参数,以指示用户是否已按下 Cancel 按钮。 之后,您负责停止正在执行的任务。

另请参阅:DisplayProgressBarClearProgressBar 函数。


Cancelable progress bar in the editor.

using UnityEngine;
using UnityEditor;

public class CancelableProgressBarExample : EditorWindow { static int secs = 0; static double startVal = 0; static double progress = 0;

[MenuItem("Example/Cancelable Progress Bar")] static void Init() { // Get existing open window or if none, make a new one: CancelableProgressBarExample window = (CancelableProgressBarExample)EditorWindow.GetWindow(typeof(CancelableProgressBarExample)); window.Show(); }

void OnGUI() { if (secs > 0) { if (GUILayout.Button("Display bar")) startVal = EditorApplication.timeSinceStartup;

progress = EditorApplication.timeSinceStartup - startVal;

if (progress < secs) { if (EditorUtility.DisplayCancelableProgressBar( "Simple Progress Bar", "Shows a progress bar for the given seconds", (float)(progress / secs))) { Debug.Log("Progress bar canceled by the user"); startVal = 0; } } else EditorUtility.ClearProgressBar(); } else secs = EditorGUILayout.IntField("Time to wait:", secs); }

void OnInspectorUpdate() { Repaint(); } }