通过公共Mono模块,让输入模块的Update能够每一帧运行
然后对输入操作进行事件注册,在Update中一旦进行相应操作,就进行事件分发,执行自己相应的按键逻辑
public class InputMgr : BaseManager<InputMgr> {
private bool isStart = false;
public InputMgr {
MonoMgr.GetInstance().AddUpdateListener(Update);
}
// 是否开启/关闭输入检测
public void StartOrEndCheck(bool isOpen) {
isStart = isOpen;
}
public void Update() {
if (!isStart) return;
if (Input.GetKeyDown(KeyCode.W)) {
EventMgr.GetIntance().EventTrigger("PressDOWN", KeyCode.W);
}
if (Input.GetKeyUp(KeyCode.W)) {{
EventMgr.GetIntance().EventTrigger("PressUp", KeyCode.W);
}
}
}
// ---------------------------------------
public class InputTest : MonoBehaviour {
public Start() {
InputMgr.GetInstance().StartOrEndCheck(true);
EventCenter.GetInstance().AddEvnetListener("PressDown", CheckInputDown);
EventCenter.GetInstance().AddEvnetListener("PressDown", CheckInputUp);
}
private void CheckInputDown(object key) {
KeyCode code = (KeyCode)key;
switch(code) {
case KeyCode.W:
// TODO...
break;
}
Debug.Log("down");
}
private void CheckInputUp(object key) {
Debug.Log("up");
}
public OnDestroy() {
EventCenter.GetInstance().RemoveEventListener("PressDown", CheckInputDown);
EventCenter.GetInstance().RemoveEventListener("PressDown", CheckInputUp);
}
}