うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【C#】スクリプトを1行ずつロードする

コード

using System;
using System.IO;

public class ScriptUtil
{
    /// <summary>
    /// スクリプトをロードする
    /// ※スクリプト以外でもテキストファイルであればロードできる
    /// </summary>
    /// <param name="path">パス (Assets/からでよい)</param>
    /// <param name="lineAction">1行見込み毎に呼び出される</param>
    /// <param name="encode">エンコード指定 デフォルトは utf-8</param>
    private static void Load(string path, Action<string, int> lineAction, string encode = "utf-8")
    {
        var encoding = Encoding.GetEncoding(encode);
        using (var reader = new StreamReader(path, encoding))
        {
            var line = 0;
            while (!reader.EndOfStream)
                lineAction?.Invoke(reader.ReadLine(), ++line);
        }
    }
}

使い方

スクリプトを全行ロードして出力

ScriptUtil.Load("Assets/Script/Hoge.cs", (t, l) =>
{
    Debug.Log($"{l} {t}");
});