topaz-dev’s

ああああああ

Unity ScriptTemplates #1

ScriptTemplates

UnityでC#のコードを生成する際のデフォルトのコードを変更することができる。

デフォルトのスクリプトテンプレートは確認することができ直接変更することもできる。自分の環境(Mac, Unity Hub v.2021.3.6f1) の場合は以下に入っている。

/Applications/Unity/Hub/Editor/2021.3.6f1/Unity.app/Contents/Resources/ScriptTemplates

このディレクトリの中には16個のテキストファイルが入ってる。

この中の81-C# Script-NewBehaviourScript.cs.txtを除いてみると見たことのあるようなテキストデータとなっている。これがC#スクリプトを生成した時のテンプレートとして使われている。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

    #ROOTNAMESPACEBEGIN#
public class #SCRIPTNAME# : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        #NOTRIM#
    }

    // Update is called once per frame
    void Update()
    {
        #NOTRIM#
    }
}
#ROOTNAMESPACEEND#

ここで出てきた#ROOTNAMESPACEBEGIN##SCRIPTNAME#などは外部から設定される引数だと考えれば良い。あとで触れていく。

カスタムテンプレート

スクリプトテンプレートの場所が分かり変更することが出来たとしても/Applications/Unity/Hub/Editor/2021.3.6f1/Unity.app/Contents/Resources/ScriptTemplatesのデータを書き換えてしまうと、「そのバージョンを使用している全てのUnityプロジェクトに適用されてしまう」、「複数人開発の時にテンプレートを共有することができない」という問題が生じる。そこでプロジェクトごとのテンプレートを作成する。

何も行わない状態で 右クリック->Create->C# ScriptからC#スクリプトを生成するとNewBehaviourScriptという名前でいつものStart関数やUpdate関数が書かれたコードが生成される。

生成コードをカスタマイズするためにAssets直下にScriptTemplatesというディレクトリを作成する。そして81-C# Script-NewBehaviourScript.cs.txtというテキストファイルを作成しよう。

中身は元の/Applications/Unity/Hub/Editor/2021.3.6f1/Unity.app/Contents/Resources/ScriptTemplatesにあった81-C# Script-NewBehaviourScript.cs.txtHogeという関数を加えておく。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

    #ROOTNAMESPACEBEGIN#
public class #SCRIPTNAME# : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        #NOTRIM#
    }
    
    // Update is called once per frame
    void Update()
    {
        #NOTRIM#
    }

    void Hoge()
    {
        #NOTRIM#
    }
}
#ROOTNAMESPACEEND#

作成したらUnityに読み込ませるため(?) に一度Unityのエディタを再起動する。その後右クリック->Create->C#ScriptからC#のコードを生成すると、Hoge関数が実装されたものが生成される。 Assets以下のScriptTemplatesの中身を変えることで自由にカスタマイズが可能となる。Update関数たくさんあったら怖いよね。。デフォルトからは消してしまおう。など。。