テスト用のプロジェクトを仮作成
自作ゲームを作成し始めたことがきっかけで、ある機能を追加したいけどメインプロジェクトで作成してやっぱり要らなくなったら取り除くのが面倒そうな機能を実装するケースが出始めてきました。
そういう時、新規プロジェクトで必要な設定のみ行ってから実装して判断するという方法を取っていました。
そのようなケースが出るたび何かしらの設定を行う必要があるので素早くスタートしづらくとても面倒でした。
簡単な所だと UE5.0 で Enhanced Input を使いたい場合、Input Mapping Context や Input Action 他、プロジェクト設定など毎回する必要があったわけです。
(UE5.1 で Enhanced Input が標準でサポートされたので入力に対しては結構楽になったのは嬉しいですね!)
そんな訳で、なにか検証を行う用のテンプレートプロジェクトがずっと欲しかったのでようやく重い腰を上げて簡易版を作成してみました。
まだ欲しい機能はありますが、ざっと下記の内容に。
- Game Mode
- Game Instance
- Enhanced Input 用の Player Controller
- Save & Load の基本機能
- Blueprint Interface
- Common UI 周りの基本設定と表示
- World Partition / Data Layer の基本設定 など
テスト用とは言えメインの処理に統合やアセットの移行を行うことも想定しているので、出来るだけ参照が紐づかないように Blueprint Interface 周りは整えました。
例えば Game Instance や Player Controller などが持っている機能にアクセスするためテスト用ではキャストをしてましたが、Blueprint Interface 経由で呼ぶようにしておけば参照ビューア上では紐づかないため、アセットの移行で楽になることが期待できそうです。
後は Enhanced Input で「Add Mapping Context」する時に Input Mapping Context や Priority を指定しますが、これらも関数にまとめておき、Priority に関してはマジックナンバーを避けれるようにしてみました。
とりあえず PriorityList なる列挙型を用意し、その列挙型を Key とし、Priority である Integer型を Value に持つ変数をマップで持っておくことにしました。
手動で Priority を割り当てているとその内どれがどれだっけと追うのが大変なことになりそうですしね...。
とりあえずこれで環境構築をし直さないでいい所が増えたので、細かいところはまた自分なりにアップデートしていこうと思います。
効率の良いやり方ではなさそうですが、とりあえず自分の中では作業が少し楽になったので良しとします!