【Unity】【エディタ拡張】保存する先を選択させるパネルを表示する

エディタ拡張でファイル保存を行う際に、保存する先を選択させるパネルを表示する方法です。

ソースコード

ソースコードは下記のとおりです。

using UnityEngine;
using UnityEditor;

public class SaveFilePanel : EditorWindow {
    
    [MenuItem("Window/Save File Panel")]
    public static void Open()
    {
        GetWindow<SaveFilePanel>("Save File Panel");
    }

    private void OnGUI()
    {
        if (GUILayout.Button("保存")) {
            // 保存先のファイルパスを取得する
            var filePath = EditorUtility.SaveFilePanel("Save", "Assets", "default_name", "prefab");
            
            // パスが入っていれば選択されたということ(キャンセルされたら入ってこない)
            if (!string.IsNullOrEmpty(filePath)) {
                // 保存処理
            }
        }
    }
}

EditorUtility.SaveFilePanel()でパネルを表示して保存先を選択させています。

第一引数はタイトル、第二引数は開いたときに表示するフォルダ、第三引数はデフォルトの名前、第四引数は拡張子です。

結果

f:id:halya_11:20180419141441p:plain

正常にパネルが表示されました。

Asset Pathを取得したい場合

フルパスじゃなくAssetPathを取得したい場合にはEditorUtility.SaveFilePanelInProjectを使います。
使い方は下記の記事に書いてあります。

light11.hatenadiary.com

参考

Unity - Scripting API: EditorUtility.SaveFilePanel