第10回 3D探索3
2 / 4 対象へ操作入力を渡す
このステップの目的
対象選択と具体的な処理を分け、同じ入力を共通の操作入口へ渡す
型が共通なら同じ呼び出し方を使える
ExploreTargetにはPromptとInteractという共通の入口があります。Promptは所持情報を受け取って案内文字列を返し、Interactは操作を実行します。鍵や扉の具体的な処理は対象側に置きます。
csharp
Target = FindTarget();
prompt.text = Target == null ? "" : Target.Prompt(inventory);
if (Target != null && input.Interact)
Target.Interact(inventory);ExplorerInteraction.LateUpdateの流れを抜き出した例です。実際の表示には操作ボタンの表記も付けます。input.InteractはInput Systemから取得した押した瞬間の情報です。押しっぱなしの情報へ置き換えると、毎フレーム実行される点に注意してください。
Targetがnullなら空文字で案内を消し、入力があっても呼び出しません。確認用対象で入力を1回行い、対象側の処理が1回呼ばれることを確かめます。
チェックリスト
- 対象なしで入力しても例外が出ない
- 対象を変えても同じInteractの入口から呼べる
- 入力の取得と対象固有の処理が別のクラスにある