この記事でのバージョン
Unity 2018.4.19f1
はじめに
以前、エディタ拡張で進捗状況を表示するUI、
いわゆるプログロレスバーの実装方法について紹介した事がありました。
今回はこれの途中でキャンセルできるバージョンのご紹介です!
イメージとしては以下のような感じ。
DisplayCancelableProgressBar
キャンセル出来るプログレスバーを表示したい時は
EditorUtility.DisplayCancelableProgressBarを使うと簡単に実装が出来ます。
使い方は以下のようにDisplayCancelableProgressBarを呼ぶだけ。
ただし引数でキャンセルされたか(☓ボタンが押されたか)が取得出来るので、
それを使って処理を止める実装は別途必要になります。
float progress = 0;//進捗状況 0~1 bool isCancel = EditorUtility.DisplayCancelableProgressBar ("タイトル", "情報", progress);//プログレスバー表示
なお、処理が完了した後、EditorUtility.ClearProgressBarを実行し、
プログレスバーを削除しないと、永遠と表示され続けるので注意が必要です。
EditorUtility.ClearProgressBar();
ちなみに最初の例であったコードは以下の通りです。
int loopCount = 100; for (int i = 0; i < loopCount; i++) { float progress = (float)i / loopCount; bool isCancel = EditorUtility.DisplayCancelableProgressBar("ループ中", i.ToString() + "回目(" + (progress * 100).ToString("F2") + "%)", progress); if (isCancel) { Debug.LogWarning($"{i}でキャンセルしました"); break; } } EditorUtility.ClearProgressBar ();