【Unity】EditorUtility.OpenFilePanelでフォルダ指定に失敗する問題対応

今回は、Unityのエディタ拡張でEditorUnity.OpenFilePanel でフォルダの指定に失敗したときの問題対応について書きます。

開発環境
  • Windows10 Home 64bit
  • Unity Version 2020.3.17f1 Personal
  • Visual Studio Community 2019  16.11.2
目次

OpenFilePanelのファイル指定で問題発生

以下のエディタ拡張のコードを見てみます。

using UnityEditor;
using UnityEngine;

namespace Assets.Editor
{
    [CustomEditor(typeof(CubeTest))]
    public class CubeTestEditor : UnityEditor.Editor
    {
        public override void OnInspectorGUI()
        {
            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("ファイル選択ダイアログを開く"))
            {
                EditorUtility.OpenFilePanel("ファイル選択1", "E:\\test1\\test1.txt", "txt");
            }

            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Separator();
        }
    }
}

[ファイル選択ダイアログ]ボタンを押すと、ファイル選択ダイアログを表示します。

OpenFilePanel の第2引数で“E:\\test1\\test1.txt”を指定します。実際、パスは存在しますし、ファイルも存在します。

それで、ボタンを押すと、以下のファイル選択ダイアログが表示されました。

test1フォルダではなく、想定と違ったフォルダ( E:\\ )が表示されました。

OpenFilePanelでフォルダ指定に失敗する原因

原因を試行錯誤で探っていました。結果、OpenFilePanel の第2引数は、ファイルではなくフォルダにしなくてはならないことがわかりました

実際、第2引数を “E:\\test1\\test1.txt” → “E:\\test1” に変更すると、

フォルダ指定がうまくできました。

ファイルの絶対パスを指定すると、

  • フォルダは指定のファイルがあるフォルダを表示
  • ファイル名に指定したファイル名を表示

となると思ってたんですが、そうならなかったです。

EditorUtility.OpenFolderPanel も同様にファイルを指定すると、想定外なフォルダが表示されます。

リファレンスには、それっぽい説明はありませんでした。

あわせて読みたい
EditorUtility-OpenFilePanel - Unity スクリプトリファレンス "open file"ダイアログを表示し、選択されたパスを取得します

OpenFilePanelを使うときは、フォルダを指定しないとうまくいかないようです。

まとめ

Unityのエディタ拡張でEditorUnity.OpenFilePanel でフォルダの指定に失敗したときの問題対応について書きました。OpenFilePanel を使うときは、ファイル指定でなくフォルダ指定をする必要があるようです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次