Skip to content
第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の入口から呼べる
  • 入力の取得と対象固有の処理が別のクラスにある