コード例 #1
0
    void Process(Action <string, string> action)
    {
        if (string.IsNullOrEmpty(baseDirectoryPath) || !Directory.Exists(baseDirectoryPath))
        {
            Debug.LogError("missing baseDirectory");
            return;
        }

        for (var i = 0; i < destDirectories.Length; i++)
        {
            if (string.IsNullOrEmpty(destDirectories[i].Path) || !Directory.Exists(destDirectories[i].Path))
            {
                Debug.LogError("missing destDirectory : " + i);
                return;
            }
        }
        AdjustRatio();
        var files = Directory.GetFiles(baseDirectoryPath);

        print(files.Length);
        for (var i = 0; i < destDirectories.Length; i++)
        {
            destDirectories[i].FileNUM = Mathf.FloorToInt((float)files.Length * destDirectories[i].Ratio);
            print(destDirectories[i].FileNUM);
        }

        files = EUtils.Shuffle(files);
        var directoryIndex = 0;
        var num            = 0;

        for (var i = 0; i < files.Length; i++)
        {
            var extension = Path.GetExtension(files[i]);
            if (targetExtensions.Length > 0)
            {
                if (!targetExtensions.Contains(extension))
                {
                    continue;
                }
            }
            var directory = destDirectories[directoryIndex];
            action(files[i], Path.Combine(directory.Path, (num + 1) + extension));
            var progress = (float)i / files.Length;
            EditorUtility.DisplayCancelableProgressBar("Process", "processing...", progress);
            num++;
            if (num >= directory.FileNUM)
            {
                directoryIndex++;
                num = 0;
                if (directoryIndex >= destDirectories.Length)
                {
                    break;
                }
            }
        }
        EditorUtility.ClearProgressBar();
        print("complete");
    }