Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

Unity スクリプト・テンプレートを自分で作成し、設定する。[Script Templates]

 今回はScript Templatesを自分で作成することで、Unity上でのスクリプト作成を効率化する方法について書いていきます。

 Unity公式による、コーディング・スタイルについてまとめたe-book "Create a C# style guide"を参考にしています。スクリプト・テンプレートについてはオマケ情報として扱われていますが、かなり有益な内容です。(Appendix: Script Templates)

 

C#スクリプトの作成

 Unityエディターにおいて新しくC#スクリプトを作る場合、右クリックのCreateメニューから"C# Script"を選択するわけですが、その作成直後のコード内容はScript Templateに基づいて構成されています。

 

NewMonoBehaviour Script

 Assetsフォルダ内にcsファイルが作成され、名前を入力するとそれがコード内のクラス名にも反映され、あらかじめStartメソッドとUpdateメソッドが書き込まれています。

 これはMonoBehaviourコードであり、もちろんUnityではMonoBehaviourコードを書くのが主なので、多くのケースでこれは正しくテンプレートとなります。

 

 しかし、例えばECSにおけるコーディングは、このMonoBehaviourテンプレートをわざわざ消してイチから書き始める必要があります。そして、以前からのUnityの主要な機能のひとつであるScriptableObjectもMonoBehaviourを継承しておらず、StartもUpdateも必要ありません。

 ECSはその特性上、スクリプト・ファイルの個数が多くなりがちなので、使うことの多い主要なタイプはテンプレートがあった方が書き始める際の負担は減ります。そして、ScriptableObjectに関しては、テンプレートがそもそもCreateメニュー内に用意されていないのがおかしいくらいです。

 

Script Templatesとは

 幸運なことに自分でスクリプトのテンプレートを作成し、設定することが出来ます。ただし、ディレクトリに直接ファイルを置くので、場合によっては既存のファイルを壊したり、Unityに不具合を出す危険性があることに注意してください。

 

C: > Program Files > Unity > Hub > Editor >20xx.x (目的のバージョン)> Editor > Data > Resources > ScriptTemplates

 かなり深い階層にですが、ScriptTemplatesというフォルダがあります。ここにはテキスト(.txt)ファイルがいくつか収められており、Unityはここにあるテキストを元にC#スクリプトを作成します。

ScriptTemplates

多くのテキストファイルが収められている

 

 Script Templateとは要するにただのテキストなので、自分で簡単に用意することが出来るし、既存のファイルの改造も容易です。ただし、そのファイル名にはフォーマットがあり、例えば自分の作ったScriptableObjectテンプレートは・・・

80-ScriptableObject Script-NewSO.cs.txt

としています。

 

PriorityNumber : 表示される優先順位

MenuPath : Createメニューでの表示

DefaultName : ファイル作成時のデフォルト名

FileExtension : ファイルの拡張子

"PriorityNumber"-"MenuPath"-"DefaultName"."Extension".txt

 

 ファイル名の中にいくつかのセクションがあり、-(ハイフン)で区切られます(拡張子の前はピリオド)。またメニューパスにおいてアンダースコアを2個使うことでメニューに階層を作ることが出来ます。

ECS__ComponentData

 この場合、メニュー上にはECS > と表示され矢印からサブメニューが展開されるようになります。

 

ScriptableObject_Template

何の変哲もない、ただのテキスト

 それではScriptableObjectのテンプレートを作ってみます。上画像の通り、こんなもんでいいんです。これだけでもMonoBehaviourをわざわざ消して書き直す手間を無くなりますし、ちょっとした時間と手間であっても、それを何回も繰り返すのは無駄ですからね。

 #SCRIPTNAME#はファイルに入力した名前が反映されます。入力しない場合はデフォルト名が使われます。#NOTRIM#は空白行の存在を保証するキーワードです。

 

設定する

 このように作ったテキストファイルを先ほどのScriptTemplates内にコピペします。設定とは言ってもフォルダ内にファイルを移動させるだけです。Unityを起動していない時に行います。

 

 このフォルダ内への書き込みには管理者権限が必要になり、ダイアログで確認されます。ただのテキストファイルなので簡単ですが、だからこそ注意が必要になりますし、PCの知識に不安がある人、怖いという人はやらない方が良いでしょう。

 参考資料内でも(特に既存ファイルを改造する場合は)バックアップを取っておくことを推奨しています。

 

 以上で、Unityを起動して右クリック、Createメニューを開くと新しいメニューが表示されるようになっているはずです。これでわざわざ書き直す必要無しに目的の形式のスクリプトを直ぐに書き始められるようになりました!

 

まとめ

 というわけで、スクリプトのテンプレートの自作、設定について書いてみました。正直、簡単ではあるのでもっと早くにやれば良かったし、この情報を教えてくれたUnity公式のe-bookには感謝です。

 このような作業、コーディングを効率化するテクニックはどんどん覚えていきたいですし、探していきたいと思います。