【Unity】Script Templeteをカスタマイズして不要な行を消す

wp_tmb_unity-script-templates

皆さんはUnityのスクリプトテンプレートというものをご存知でしょうか。

スクリプトテンプレートはUnityでスクリプトを新規作成してVisuial Studio Community(Visual Studio Code等)でファイルを開いた時に、空のファイルではなく、すでにテンプレート文が用意してくれる役割を果たしてくれます。

これはデフォルトのC#のスクリプトテンプレートです。

81-C# Script-NewBehaviourScript.cs.txt(ファイル名)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class #SCRIPTNAME# : MonoBehaviour {
  // Use this for initialization
void Start () {
#NOTRIM#
}
  // Update is called once per frame
void Update () {
#NOTRIM#
}
}

しかし、デフォルトのスクリプトテンプレートの中に自分にとって不要なテキストは存在していませんか?

不要なテキストと言えば、例えばこのコメント行です。

// Use this for initialization.
// Update is called once per frame.

それぞれの意味はUnityを学んでいる方にとってはご存知かもしれませんか。おさらいのために記載します。

  • Start関数:「初期化に使用します。」
  • Update関数:「更新はフレームごとに1回呼び出されます。」

これはUnityの基礎で学ぶことです。

Unityを使い始めてからは、コメントの削除くらいは億劫にならないかもしれませんが、使い続けると最初から消してほしいとも思うようにもなります。

そもそもなぜUnityでC#を新規作成した時にこのようなコードが記述されているのかというと、これはUnity側が用意したスクリプトテンプレートに従っているからです。

私がUnityのスクリプトテンプレートの存在を知り、カスタマイズすることができるのを知ったのは、2019年10月ですが、最新のUnity 2020.1 betaにおいてもこのテンプレート文の内容は変更されていません。

おそらくこのような記述されているのは、全世界で意味が通じるからだと考えられます。

そこでデフォルトのテンプレートをカスタマイズして自分にとって最適なテンプレートを用意したくはありませんか? コメントを毎回削除するの面倒臭くはないですか?

f:id:koshishirai:20200506102748p:plain:w400 f:id:koshishirai:20200506102757p:plain:w400
変更前(デフォルト) 変更後

本記事では、UnityのC#新規作成でスクリプトテンプレートによって毎回生成されるコードをカスタマイズする方法を説明します。

削除方法

  1. UnityEditorの中にコードテンプレ文がテキストファイル(.txt)に用意されている

Unityエディターのインストール先(指定した場所)にいき、Sctipt Templatesフォルダを探します。

  • Windows
"C:\Program Files\Unity\Hub\Editor\2017.4.28f1\Editor\Data\Resources\ScriptTemplates"
f:id:koshishirai:20200506103246p:plain
  • Mac(自分の場合)
/Applications/UnityEditor/2017.1.1f1/Unity.app/Contents/Resources/ScriptTemplates 
f:id:koshishirai:20200506102903p:plain f:id:koshishirai:20200506102915p:plain

Script Templetesフォルダの中身を見ます。

81-C# Script-NewBehaviourScript.cs.txt
82-Javascript-NewBehaviourScript.js.txt
83-Shader__Standard Surface Shader-NewSurfaceShader.shader.txt
83-Testing__EditMode Test C# Script-NewEditModeTest.cs.txt
83-Testing__PlayMode Test C# Script-NewPlayModeTest.cs.txt
84-Shader__Unlit Shader-NewUnlitShader.shader.txt
85-Shader__Image Effect Shader-NewImageEffectShader.shader.txt
86-C# Script-NewStateMachineBehaviourScript.cs.txt
86-C# Script-NewSubStateMachineBehaviourScript.cs.txt
87-Playables__Playable Behaviour C# Script-NewPlayableBehaviour.cs.txt
88-Playables__Playable Asset C# Script -NewPlayableAsset.cs.txt
90-Shader__Compute Shader-NewComputeShader.compute.txt

C#以外にも、UnityでCreateした際、以下のスクリプトテンプレート(Script Templetes)を書き換えることが可能です。拡張子 .js, .shader, .computeなどがあります。 0. コードをカスタマイズする

  • カスタマイズを反映するとそれ以後、元の状態も戻せなくなるため、心配な方はテキストファイルのバックアップをとった方が良いです。
  • WIndowsの場合、.txtファイルを保存する時にアクセス権限を求められたら、管理者で実行します。
f:id:koshishirai:20200513115446p:plain

C# ScriptTemplete (変更前)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class #SCRIPTNAME# : MonoBehaviour {
  // Use this for initialization
void Start () {
#NOTRIM#
}
  // Update is called once per frame
void Update () {
#NOTRIM#
}
}

C# ScriptTemplete (変更後)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class #SCRIPTNAME# : MonoBehaviour {
void Start () {
#NOTRIM#
}
void Update () {
#NOTRIM#
}
}

今回は、毎回生成されるコメント

// Use this for initialization.
// Update is called once per frame.

を削除しました。 – void Update () を使う頻度が滅多になければ削除しても良いです(任意)。

  • 自由にスクリプトテンプレートをカスタマイズすることが可能です。
  • Unityで既に作成済みのC#は反映されません。
  • この操作は、Unityバージョンごとに書き換える必要があります。
f:id:koshishirai:20200506102748p:plain f:id:koshishirai:20200506102757p:plain
変更前(デフォルト) 変更後

最後に

これで毎回生成される改行と削除の手間が減るぜー! この方法は他のテンプレートでも適用することができます!

参考

[1] Prevent Start and Update comments – Unity Answers

動作環境

MacとWindowsで動作を確認しました。Unityのバージョンは関係ありません。

  • macOS Mojave
    • Unity 2017 1.1f1
    • Visual Studio for Mac Community バージョン8.3.4(build)
    • テキストエディタ(何でも良い)
  • Windows 10
    • Unity 2017.4.28f1
    • Visual Studio Community 2019
    • テキストエディタ(何でも良い)