ゲーム開発の面倒くさい作業時間を減らしたい!
いきなりですが、ゲーム作るのってとっても大変ですよね。
ゲームを作ったことがない人が想像する10倍の作業が実際にはあって、思ったよりも開発に時間が掛かってしまったことがある人も多いハズ。
限られた時間を少しでも本質的なクリエイティブな作業時間に充てるためには、可能な限り面倒な作業時間をカットしていく必要があります。
そこでオススメする方法が、「プロジェクトのテンプレート化」です。
私の場合、ある程度まで実装した状態のテンプレートを作り、新規にプロジェクトを作るときは、テンプレートをもとに開発することで、面倒な初期設定やインストール作業工数を減らすようにしています。
今回は、このプロジェクトのテンプレート化を行う方法を紹介します!
この方法を実践していただくと、UnityHubからプロジェクトを新規作成する際、いろんなアセットがあらかじめインストールした状態のプロジェクトの状態で開始することが出来ます!

プロジェクトテンプレート化の工程
具体的な作業の工程としては、以下のとおりです。
(0)テンプレート化できる対象アセットを特定する
(1)新規プロジェクトを作る
(2)テンプレートに必要なアセット・OSSをインストール または、 汎用スクリプト等を作成
(3)Template Creatorからテンプレート化
(4)テンプレート化したファイル、UnityHubのテンプレートファイルとして登録
一つずつ解説していきます。
(0)テンプレート化できる対象アセットを特定する
私の場合、以下の内容がテンプレート化できると判断しました。
- 必ず使うアセット、OSSのインストール
- TextMeshProの日本語フォント
- デバッグツール
- テクスチャのインポート設定
- 汎用スクリプト
他にも、以下のような内容もテンプレート化できる候補になると思います。
・UI用のテクスチャ、アイコン
・エディタ拡張機能
・Global Volumeなどのポストプロセスの設定
・よく使うPrefab
(1)プロジェクトの新規作成
UnityHubからプロジェクトを新規作成します。
このプロジェクトは、Git/GitHub等のバージョン管理システムでバージョン管理することをオススメします。
Git/GitHubについては以下で解説しています。

(2)テンプレートに必要なアセット・OSSをインストール OR スクリプト等を作成
アセット・OSS
私のプロジェクトでは、以下のアセット・OSSをほぼ確実に使用しています。
新規に作成したプロジェクトで以下のアセットをインストールしました。
アセット | 内容 | DL先リンク |
---|---|---|
UniTask | 非同期処理を扱えるOSS。 もはや業界標準?になりつつある | https://github.com/Cysharp/UniTask |
R3 | UniRxの後継OSS。 状態が変わったことを検知して処理を行うReactiveプログラミング が可能になる超汎用ライブラリ。 | https://github.com/Cysharp/R3 |
VContainer | クリーンアーキテクチャを意識してプロジェクトを作りたい人にオススメ。 いわゆるPureC#と呼ばれる、Unityに依存しないコードで実装が可能になる。 | https://vcontainer.hadashikick.jp/ja/getting-started/installation |
DoTween Pro | アニメーションの実装をお手軽にできるライブラリ。 詳しくはこちらで解説しています。 | https://x.gd/kvdQL |
unity-overwriter-master | プロジェクト内のアセットを上書きしてくれるエディタ拡張ライブラリ。 | https://github.com/ina-amagami/unity-overwriter |
Shapes2D | 角丸ボタンや、アウトラインのついた図形の作成、グラデーション付けなど、ちょっとした装飾をUnity内で行えるツール。 いつもこのアセットを布教している気がする。 | https://x.gd/LfB5U |
EasyCustomVFX/UI | エフェクトやトランジッションなどの演出パッケージ。 演出に使う素材をパーツごとに分割して大量に盛り込んであるアセット。 私が作りました。 | https://yurinchi2525.booth.pm/items/5740481 |
TextMeshProの日本語フォント
残念なことにUnityでデフォルトのプロジェクトを開いただけでは、TextMeshProを日本語で使用することが出来ません。
詳しくは以下を参照。

そこで日本語フォントを作る必要があるのですが、この作業はフォントごとに1回だけ行えば済む作業です。
以下のようなフォントファイル(SDFファイル)をテンプレートの対象にしています。

デバッグツール
デバッグ用のツールも汎用化しています。以下の機能を持ったデバッグツールは、どのプロジェクトでも共通で使用しています
・再生速度を調整する機能
・現在のFPSを表示する機能
・シーンをリロードする機能
テクスチャのインポート設定
テクスチャをUnityの中に取り込む際のデフォルトの挙動は実は制御が出来ます。
2Dゲームを作る場合は以下の設定にしています。
特に意識したいのが、スプライトモードの設定と、最大サイズです。

Unity2023?あたりから、2Dの場合、スプライトモードのデフォルトの挙動が「複数」になってしまったのですが、正直「単数」で使うケースの方が多いので、単数に設定したインポート設定にしています。
また、最大サイズについても、Unityのデフォルトは2048になってしまいますが、私はモバイル向けの軽量なゲームを作ることが多いため、512でインポートするようにしています。
もちろん、このあたりは、3Dゲームを作る人、高画質なデスクトップ向けのゲームを作る人などによって設定は変わると思いますので、自分の作りたいゲームに合わせた設定にすることをオススメします。
このインポーターを作る方法は以下のとおりです。
インポート設定の作成
(1)テクスチャのインポート設定を行った後、以下のボタンをクリック。

以下の画面から、「Create New」を選択

適当なフォルダにプリセットファイルを保存。
最後に、作成したTextureImporterを選択し、「デフォルトに追加」を押せば設定完了です。

汎用スクリプト
以下のような汎用的な変換を行うクラスなどは、静的なクラスで作成し、複数のプロジェクトで流用するようにしています。
・時間のフォーマットの変換
・PlayerPrefsの値のセーブ/ロード
・シーンロードの管理
・JSONのコンバート/デシリアライズ
・UIのアニメーション制御
テンプレートプロジェクト化する方法
最後に、これらの内容をプロジェクトのテンプレートとして設定していきます。
まずは、新規プロジェクトを作成し、上記に記載したアセットの内容をすべて設定します。
ここで作ったアセットたちはプロジェクト固有で作成したファイルを混同しないように、「TemplateAssets」のようなフォルダにまとめておくのがオススメです。

アセットのテンプレート化には、Mojatto / もじゃっと様が作成された、「Template Creator」を使用させていただきました。
このアセットの説明欄に記載がありますが「あくまで一個人が現在進行系で開発中のプログラム」ではあるので、その点はご留意ください。

このアセットは、プロジェクトの現在の内容をテンプレート化して保存してくれます。
詳しくは、アセットの中に入っているReadMeを読みましょう。
このアセットを使って、パッケージを作成します。処理には数分~数十分かかります。
私は以下のように設定をしました。

作成後に作成されたファイルを、以下のパスに移動させます。
C:\Program Files\Unity\Hub\Editor\[バージョン]\Editor\Data\Resources\PackageManager\ProjectTemplates
(Unity本体のインストール先に応じてパスは変わります)
最後に、「Template Creator」の処理が完了したファイルを、上記のパスに移動させれば作業は完了です。

UnityHubを再起動し、新規プロジェクトを作成しようとすると、以下のようなオリジナルプロジェクトテンプレートが表示されます。やったね!

このテンプレートを選択してプロジェクトを選択すると、必要なライブラリやアセット、汎用スクリプトなどがあらかじめインストールされた状態でプロジェクトが開始出来ます!
2Dゲーム、3Dゲーム、VRなど、ジャンルによってテンプレートを分けてもいいかもしれません。
まとめ
以上、プロジェクトテンプレートの作成方法でした。
こんな内容もテンプレート化出来そう!みたいなものがあればコメントしてくださいね、定期。
プロジェクトを共通化して効率化を進め、開発を加速していきましょう!
それでは、素敵なゲーム制作ライフを!
コメント