ダイアログからフォルダの選択をして,フォルダ内のファイルを全件取得する(Unity)

デモ

f:id:ka1357amnbpdr:20200228204409g:plain

コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Windows.Forms; //OpenFileDialog用に使う
using System.IO;

public class GetFiles : MonoBehaviour
{
    // Start is called before the first frame update
    private string path;
    private string[] files;
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    public void OpenFolder()
    {
        FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
        folderBrowserDialog.Description = "ダイアログの説明文";
        // デフォルトのフォルダを指定する
        folderBrowserDialog.SelectedPath = @"C:";
        // 新しいフォルダーを作成するボタンの表示
        folderBrowserDialog.ShowNewFolderButton = true;
        if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
        {
            Debug.Log(folderBrowserDialog.SelectedPath);
            path = folderBrowserDialog.SelectedPath;
            ReadFile();
        }
        else
        {
            Debug.Log("キャンセルされました");
        }
        // オブジェクトを破棄する
        folderBrowserDialog.Dispose();
    }

    private void ReadFile()
    {
        files = Directory.GetFiles(path, "*.json", SearchOption.AllDirectories);
        Debug.Log(files.GetType());
        foreach (string file in files)
        {
            Debug.Log(file);
        }
    }
}

参考サイト

nopitech.com

docs.microsoft.com