ゲームのヒントなどを表示する読み物を一枚の紙でまとめるだけにしようか考えましたが、やっぱり日記的なものも欲しくなったので一旦実装しました。
実装は出来るだけシンプルにし、複数ページある読み物は DataTable を差し替えるだけで対応できるようにしました。
また、ページめくり用の Input Mapping Context を用意し、
複数ページある読み物をインタラクトしたタイミングで追加しているので、ページめくり専用の入力が取れるようになっています。
(キャラの移動処理などは必要ないのでこの間、メインの IMC は Remove Mapping Context で削除。インタラクト終了後に Add Mapping Context で追加。)
ページを戻したり進めたりする入力部分はプラス方向とマイナス方向があるので、それぞれのキー毎に分けて処理しても良かったんですが、ここは Enhanced Input の Input Action(IA_FlipPage) 内にある Value Type を Axis 1D(float)で利用しました。
Input Mapping Context 内で戻るキーの方へ Modifiers の Negate を入れておけば1つの Input Action で対応ができました。
Action Value が -1.0 か +1.0 で返ってくるので Integer 型へ変換し、配列のインデックス値として利用が出来たという感じです。
今回この作業をしている時に初めて「Trancate」という小数点以下を切ってくれる関数があることを知りました。
Round~系の名前だと思っていたので見逃してました;
Axis 1D(float)にこういう使い道があったことが勉強出来て大変ためになりました。
多分、今年1番 Enhanced Input 触ってる気がするのに、なかなか扱いに慣れないという...