本日はUnity枠です。
Unityではマルチプラットフォームのアプリを開発することができますが、今回はWindowsアプリ用にOpenFileDialogを使用していきます。
OpenFileDialogとは簡単に言うとあるファイルを外部パスから読み込むための選択ウィンドウです。
〇環境
・windows11PC
・Unity6000.0.32f1
〇OpenFileDialog
OpenDileDialogを使用するためにはusing System.Windows.Forms;を使用しますが、これはデフォルトの状態では認識されません。
これを使用するためにはSystem.Windows.Forms.dllをUnity内に導入する必要があります。

dllはDynamiclibraryLinkの略でC++などで記述されたライブラリをC#で動かすために使用されます。
これは筆者Unity環境下ではC:\Program Files\Unity\Hub\Editor\6000.0.32f1\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api内に存在します。

コードは以下のようになります。
public string[][] LoadCSV(string path)
{
csvData = new List<string[]>();
OpenFileDialog openFileDialog = new OpenFileDialog
{
InitialDirectory = "C:/Users/hoge/Documents/",
Filter = "CSV files (*.csv)|*.csv", // CSVファイルのみを表示
Title = "CSVファイルを選択してください"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName; // 選択したファイルのパス
Debug.Log("選択されたファイル: " + filePath);
Encoding encoding = DetectEncoding(filePath);
Debug.Log("BOM検出結果のエンコーディング: " + encoding.EncodingName);
// BOM検出結果で正しく読めない場合に備え、フォールバック候補で読み込みを試す
string[] lines = ReadAllLinesWithFallback(path, encoding);
foreach (string line in lines)
{
// カンマでセルに分割
string[] tokens = line.Split(',');
List<string> filteredTokens = new List<string>();
foreach (string token in tokens)
{
string trimmedToken = token.Trim();
if (!string.IsNullOrEmpty(trimmedToken))
{
filteredTokens.Add(trimmedToken);
}
}
csvData.Add(filteredTokens.ToArray());
}
return csvData.ToArray();
}
return null;
}
これはCSVをstringのかたちで取得するコードです。 これを実行すると次のようにダイアログが開きます。

ここではcsvに限っているためフォルダとcsv以外のファイルは表示されません。

本日は以上です。