UnityでStarter Assetsが公開されました
対応は2020.3.0 or higher でかなり高めです。
First Person版とThird Person版が用意されています。
これらはFPS micro gameや3D Game kitとやってることは似ているのですが、何が違うかというと、次期標準となるであろうInputSystemで作られています。
正直、InputSystemはちょっと前までプレビューだったこともあり「ホントにこれでいいのか」と思うところしきりでした。
何故なのかは触ってみた方はよくお分かりだと思います。InputSystemの特徴として
・複数の入力デバイスを統合的に扱うことができる
のはかなりうれしいのですが、
・イベントとして操作をとることができる
のにもかかわらず、
・オンとオフ、変化があったときにしかイベントがこない
→ 押しっぱなしなどの処理をいちいち変数で持って書かないといけない
ので、結局いままでと変わらずUpdate()に制御を書くことになり、イベントとしてとれるようになったのにコードがしない。
・初めにアクションマップのデフォルトデータと作りアタッチなりしないとウンともスンとも言わない。カスタマイズもわかりにくい。
→相対的に従来方法より初期学習コストがかかる
・やりかたや実装方法がいっぱいあり、結局どれを推奨してるのかわからない
というような状態でした。
そんなわけで今回公式ででてきたStarterAssetはどうなっているかというと、
・イベントとして入力をとりメンバ変数で保持。その値をUpdate()で使う
という、身もふたもない……というか、それでええんか……みたいな実装になってました。もっとシンプルな方法ないんか? と悩んだのはなんだったのか。
今後これが標準になって旧InputManagerが廃止されたとき困るのは初学者だろうと思います。
高度なことはともかくとして、「Updateにたった一行で書くだけでキー入力がとれる」からこそ「はじめの一歩」のハードルが低いのがInputManagerのよいところでした。
「多くの初期設定を要求し、メンバ変数などでデータの保持の概念などを知る必要がある」InputSystemはプログラムが分かっている人はともかくとしてハードルがかなり上がった印象です。
実際のとこUpdateサイクルで入力のイベントが呼ばれる(押しっぱなしでも)という設定があればUpdateに書かなくてすむ分、以前よりもコードはすっきりするし初学者にも優しいんじゃと思うんですけどね。。