【Unity】【エディタ拡張】文字列をファイルに保存する

Unityのエディタ拡張で文字列をファイルに保存する方法です。

ソースコード

早速ですがソースコードです。

using UnityEngine;
using UnityEditor;
using System.IO;

public static class Example
{
    /// <summary>
    /// 文字列をファイルに上書き保存
    /// 保存先選択パネルを表示
    /// </summary>
    public static void SaveTextToFile(string text, string extension)
    {
        // 保存先のファイルパスを取得する
        var filePath = EditorUtility.SaveFilePanel("Save", "Assets", "default_name", extension);

        // パスが入っていれば選択されたということ(キャンセルされたら入ってこない)
        if (!string.IsNullOrEmpty(filePath)) {
            // 上書き保存
            SaveTextToFile(text, filePath, true);
        }
    }
    
    /// <summary>
    /// 文字列をファイルに保存
    /// </summary>
    public static void SaveTextToFile(string text, string filePath, bool append = false)
    {
        // ファイルに文字列を書き込む
        var sw = new StreamWriter(filePath, append);
        sw.WriteLine(text);
        sw.Flush();
        sw.Close();

        // アセットだったらRefresh
        if (filePath.Contains(Application.dataPath)) {
            AssetDatabase.Refresh();
        }
    }
}

説明はコメントの通りですが、StreamWriterを使って書き込むのがポイントです。
また、 AssetDatabase以外の機能でAssetを作っているためRefresh()を呼ぶ必要があります。