Unityのテンプレートを自分で作る

Unityを使ってて「これ出来ないか?」と思うことの一つで、色々なアプリを作るときにデフォルトで入れたいものが色々なものが在ります。 f:id:junshimura:20190518194846p:plain Templateの選択(UnityHub2.0)

Unityで新たなProject を作るときのテンプレートをオリジナルで

The method is easy, it is written here:

https://forum.unity.com/threads/will-we-be-able-to-define-our-own-templates.514093/#post-4212130

If you can do it, there is no need to read this, good luck!

というわけで、元ネタは別にあるのですが「わかんねーし」という方、続きをどうぞ。

Templateはどこに在るのか

先ずはTemplateがどこに在るのか、観ていきましょう。WindowsでCドライブにProgramFilesの在る、標準的な構成で特に設定を変えずにUnityをインストールした場合は、以下に存在します。

2018.3.1f1の場合はこうなります。

C:\Program Files\Unity\Hub\Editor\2018.3.1f1\Editor\Data\Resources\PackageManager\ProjectTemplates'

f:id:junshimura:20190518195122p:plain
テンプレートの場所

バージョンによって変わるときがあるので、特定のバージョンの所在を辿りたい場合、UnityHubで指定のUnityのバージョンの…から辿れます。

f:id:junshimura:20190518195843p:plain
UnityHubのインストールバージョンからたどる
選ぶとエクスプローラーで表示されます。
f:id:junshimura:20190518200014p:plain
Edtitorのエクスプローラーでの表示

ここの配下から、

Editor\Data\Resources\PackageManager\ProjectTemplates

までたどりましょう。

Templateの構成

ここに並んでいるフォルダのそれぞれがテンプレートになります。

フォルダの中身はほぼ通常のプロジェクト

中をのぞくと、お馴染みのフォルダの中身と大差ないのが判ります。

f:id:junshimura:20190518201523p:plain
各Templateの中身

ここでちょっと見かけないのが、package.jsonです。

Templateはpackageになっている

このファイルはpackageの定義に使われるもので、Templateはプロジェクト全体を抱合したpackageとなっています。それでは中身を見てみましょう。テキストファイルなので適宜、エディタで開いてください。 以下は、com.unity.template.3dの場合です。

{
    "name": "com.unity.template.3d",
    "displayName": "3D",
    "description": "",
    "defaultScene": "Assets/Scenes/SampleScene.unity",
    "version": "1.0.4",
    "category": "ProjectTemplate",
    "dependencies": {}
}

この内容の詳細は、こちらが参考になると思います。

synamon.hatenablog.com

ということでTemplateとしてのパッケージをどうするのか、という考えで作っていきましょう。

既に在るものを複製してつくってみよう

試しに、既に存在するものを複製し、適宜、編集して作ってみましょう。これが冒頭で紹介したこちらの方法です。

https://forum.unity.com/threads/will-we-be-able-to-define-our-own-templates.514093/#post-4212130

[1] フォルダごと複製する

ここではcom.unity.template.3dを例にとってやってみます。エクスプローラーでコピー・ペーストします。このときにアクセス権が必要になります。通常、このフォルダはuserが触ることを想定していませんので、あくまで自己責任でおねがいします。異常が認められたらUnityの再インストールが好いと思います。

f:id:junshimura:20190518211837p:plain
Windowsからのアラート
コピーした状態です。
f:id:junshimura:20190518211932p:plain
コピーした3Dのテンプレート

[2] フォルダ名を変える

次にフォルダ名を変更します。今回はcom.unity.template.original3dに変更しました。

f:id:junshimura:20190518215209p:plain
original3dに変更

命名には規則があり、com.unity.templateは変えず、その後ろだけ変更してください。

[3] 不要なファイルの削除

今回は直接、他の既成packageを生成しているので、元のpackageの情報は正しくありませんので、一応、消去しておきます。 消した後はこうなります。

f:id:junshimura:20190518215718p:plain
ドキュメント類を消去後

[4] package.jsonの編集

オリジナルにした部分を変更します。今回はnamedisplayNameを変更しました。このとき、フォルダのアクセス権が無いと保存できませんので適宜、取得してください

{
    "name": "com.unity.template.original3d",
    "displayName": "original3d",
    "description": "",
    "defaultScene": "Assets/Scenes/SampleScene.unity",
    "version": "1.0.0",
    "category": "ProjectTemplate",
    "dependencies": {}
}

[5] UnityHubで確認

UnityHubで表示されるか、確認し、プロジェクトを作ってみてください

f:id:junshimura:20190518215807p:plain
UnityHubで確認

[6] テンプレートのカスタマイズ

データは通常のプロジェクトに在るものと変わりませんので、シリアライズされたテキストデータ群が適宜、所定のフォルダに収まっています。エディタで編集すればそれが反映されます。ただし、内容が明確に開示されていないものや、実際にエディタがデータを展開時に上書きされる部分もあり得るため、手っ取り早いのは、一度、設定したい部分だけを作りこんでから、そのプロジェクトのデータを書き戻すのが楽だと思います。Assetフォルダに在るものはそのままコピーされます。所定のパッケージを取り込む等は試していません、少し工夫は要ると思います。

[7] 注意事項と補足

  • この手順はインストールされたフォルダの操作を伴うので、注意してください。

  • 公式で動作保証もされていませんし、当方も責任を負いかねますので、自己責任でハックしてください。

  • Hubで表示したときにアイコンで出ますが、そこのカスタマイズ方法は調べていません。やり方が分かったら教えてほしいですw