This class reports progress when you start a task with Progress.RunTask(...).
[MenuItem("Progress/Run Task 1 (MD5 all assets)", priority = 25)] static void RunTask1() { Progress.RunTask("Compute MD5", null, (id, data) => EnumerateMD5()); }
static string CalculateMD5(string filename) { using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(filename)) { var hash = md5.ComputeHash(stream); return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant(); } } }
private static IEnumerator EnumerateMD5() { var assets = AssetDatabase.GetAllAssetPaths(); var index = 0; foreach (var assetPath in assets) { if (Directory.Exists(assetPath)) continue; // Do some calculations with the asset. var md5 = CalculateMD5(assetPath); yield return new Progress.TaskReport(index++ / (float)assets.Length, md5); } }
Additional resources: Progress.Progress.