迷走テクノロギア

妄言に限りなく近い何か

【Unity】アセット内全てのLICENSE.txtをまとめる【エディタ拡張】

メリークリスマス。

ライセンス表示を実装し忘れて大慌てした記憶があるので作ってみました~

using System.IO;
using System.Text;
using System.Linq;
using UnityEngine;
using UnityEditor;

/// Put it in the Editor folder and click Edit->CreateLicenseFile
/// @author sana@f-tg.net
/// https://f-tg.net

public class LicenseFileGenerator : MonoBehaviour
{
    [MenuItem("Edit/CreateLicenseFile", false, 10)]
    static void CreateLicense(MenuCommand command)
    {
        string path = Application.dataPath + "/";
        string[] files = Directory.GetFiles(path, "LICENSE.txt", SearchOption.AllDirectories);
        string[] licenseArr = new string[files.Length];
        for (int i = 0; i < files.Length; i++)
        {
            char delim = '/';
#if UNITY_EDITOR_WIN
            delim = '\\';
#endif
            string header = $"--------------------------------\n{files[i].Split(delim).Reverse().ToArray()[1]}\n--------------------------------\n";

            StreamReader sr = new StreamReader(files[i], Encoding.UTF8);
            licenseArr[i] = header + sr.ReadToEnd();
            sr.Close();
        }
        string savePath = Application.dataPath + "/Resources/AllLicense.txt";
        File.WriteAllText(savePath, string.Join("\n\n", licenseArr));
        AssetDatabase.Refresh();
    }
}

f:id:sanaftg:20211226041649p:plain

EditタブのCreateLicenseFileを実行するとAssets内全てのLICENSE.txtをまとめたAssets/Resources/AllLicense.txtが生成されます。

f:id:sanaftg:20211226041816p:plain

...好きだからUtf8Json使ってるけどJsonUtilityでええやんと言われがち

ソースコードの使用は自己責任でご自由にどぞ