統合モノトーン構造を使用してInputManagerを改良します.

4035 ワード

入力キーを管理するInputManager


Update()関数では、プレイヤーごとにボタンを繰り返すのは大変です.
汎用機能は、イベントを簡潔に受信して処理します.
InputManagerスクリプトを作成して入力を管理します.

InputManagers Script



彼はコンポーネント化されないInput Managerだからです.
MonoBehaviourを継承せず、従来のC#スクリプトを使用します.
Monobehaviourは継承されていないので、他の人が呼んで使う必要があります.

「Delegate」キーで入力すると、
keyactionに追加する変数を宣言します.
長所ははっきりしている.
keyactionを制御する目標が増えても、
InputManagerで一度にチェックできます.

入力が受信されていない場合は終了し、入力値がある場合は
イベントは、Invoke()を使用して購読したオブジェクトに送信されます.
これで初めてInputManagersのスクリプトが完成します.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Use this class as traditional c# script not as component(Monobehaviour)
public class InputManager
{
    // Delegate 
    public Action keyaction = null;

    // InputMangers will detect inputs in OnUdate()
    public void OnUpdate()
    {
        // 입력 받은 키가 아무것도 없다면 종료
        if (Input.anyKey == false) return;

        // 어떤 키가 들어왔다면, keyaction에서 이벤트가 발생했음을 전파. 
        if (keyaction != null)
        {
            keyaction.Invoke();

        }
    }
}

Managers Script


これで、単一のトーンマネージャとしてマネージャクラスに入ります.

Input Managerインスタンスを作成してロードします.

あとで
私に運転させてくれれば.
これにより、管理者は画面上でOnUpdateを実行してマウスまたはキーボード入力を確認できます.

PlayerController Scripts


次に、プレーヤーのスクリプトコンポーネントを作成します.
この場合、Start()関数で

KeyActionを購読し、KeyActionがInvoke()メソッドで入力されていることが検出された場合、呼び出す関数を定義します.

例えば、プレイヤーが移動する関数について.