はじめに
今回はC#スクリプトからC#スクリプトを生成してみる記事になります!
これができたら、ビジュアルスクリプティングみたいなノードベースでコーディングができるようになったりとかなり夢が広がりますよね。
またちょうどネタ系のC#スクリプト生成のエディタ拡張を作っていたりします。
というわけでその根幹にあるものを見ていきましょう!
コード
かなりシンプルな内容なので、コードをいきなり見ても大丈夫だと思います。
using UnityEngine; using UnityEditor; using System.IO; public class ScriptGenerator : MonoBehaviour { // @""とすることで、複数行を書ける // ただ「"」は「""」として書きます private const string CODE = @" public class Sample { public void Start() { Debug.Log(""Start""); } } "; // メニューの「Tools -> Generate Script」を選択するとGenerateメソッドが呼ばれる [MenuItem("Tools/Generate Script")] private static void Generate() { // 作成するアセットのパス var filePath = "Assets/Sample.cs"; // もし名前(パス)が重複していた場合に、自動で語尾に「Sample1.cs」みたく数字をつけてくれる var assetPath = AssetDatabase.GenerateUniqueAssetPath(filePath); // アセット(.cs)を作成する File.WriteAllText(assetPath, CODE); // 変更があったアセットをインポートする(UnityEditorの更新) AssetDatabase.Refresh(); } }
このコードを実行するには、メニューの「Tools -> Generate Script」を選択してください。
基本的にはパスを指定してコード(.cs)を保存しているだけですが、少し特有の箇所があるので注意してください。
ただアセットを保存するときのおまじないみたく考えてOKだと思います。
さいごに
最近UIBuilderという機能を触っていたので、そのなりゆきでエディタ拡張を少し触っていました。
また今度UIElementsに関する記事を書きたいと思うので、興味がある方は是非!