【Unity】【エディタ拡張】AssetBundleとそれが含む全Assetとの対応表をcsvで吐き出す

AssetBundleとそれが含む全Assetとの対応表をcsvで吐き出すスクリプトです。

Unity2018.4.0

ソースコード

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

using System.IO;
using UnityEditor;
using UnityEngine;
public class OutputAssetBundlesAndAssets {
    [MenuItem("Tools/Output AssetBundles & Assets")]
    private static void Execute()
    {
        var text = new System.Text.StringBuilder();
        foreach (var assetBundleName in AssetDatabase.GetAllAssetBundleNames()) {
            text.Append("\"");
            text.Append(assetBundleName);
            text.Append("\",\"");
            var assetPaths = AssetDatabase.GetAssetPathsFromAssetBundle(assetBundleName);
            for (int i = 0; i < assetPaths.Length; i++) {
                if (i >= 1) {
                    text.Append("\n");
                }
                text.Append(assetPaths[i]);
            }
            text.Append("\"\n");
        }
        SaveTextToFile(text.ToString(), "csv");
    }
    private static void SaveTextToFile(string text, string extension)
    {
        // 保存先のファイルパスを取得する
        var filePath = EditorUtility.SaveFilePanel("Save", "Assets", "default_name", extension);
        // パスが入っていれば選択されたということ(キャンセルされたら入ってこない)
        if (!string.IsNullOrEmpty(filePath)) {
            // 上書き保存
            SaveTextToFile(text, filePath, true);
        }
    }
    private 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();
        }
    }
}

Tools > Output AssetBundles & Assetsを選択するとcsvファイルが保存できます。