输入控制模块
泰课指路牌:https://www.taikr.com/course/1062/task/31006/show.
话不多说,直接上代码,此处要感谢唐老狮,从他那儿学到了不少游戏开发的奇淫技巧
控制模块:
public class InputManager : SignleBaseManager<InputManager>
{
private bool isStart = false;
public InputManager()
{
MonoMgr.getInstance().AddUpdateListener(InputUpdate);
}
private void InputUpdate()
{
if (!isStart)
return;
CheckKeyCode(KeyCode.W);
CheckKeyCode(KeyCode.S);
CheckKeyCode(KeyCode.A);
CheckKeyCode(KeyCode.D);
}
public void IsStartCheck(bool isStartCheck)
{
isStart = isStartCheck;
}
private void CheckKeyCode(KeyCode key)
{
if (Input.GetKeyDown(key))
EventManager.getInstance().EventTrigger("InputDown", key);
if (Input.GetKeyUp(key))
EventManager.getInstance().EventTrigger("InputUp", key);
}
}
使用:
public class InputMgrTest : MonoBehaviour
{
void Start()
{
InputManager.getInstance().IsStartCheck(true);
EventManager.getInstance().AddEventListener("InputDown", CheckInputDown);
EventManager.getInstance().AddEventListener("InputUp", CheckInputUp);
}
private void CheckInputDown(object obj)
{
KeyCode code = (KeyCode)obj;
switch (code)
{
case KeyCode.W:
Debug.Log("前进");
break;
case KeyCode.A:
Debug.Log("向左");
break;
case KeyCode.S:
Debug.Log("后退");
break;
case KeyCode.D:
Debug.Log("向右");
break;
default:
Debug.Log("未知");
break;
}
}
private void CheckInputUp(object obj)
{
KeyCode code = (KeyCode)obj;
switch (code)
{
case KeyCode.W:
Debug.Log("前进");
break;
case KeyCode.A:
Debug.Log("向左");
break;
case KeyCode.S:
Debug.Log("后退");
break;
case KeyCode.D:
Debug.Log("向右");
break;
default:
Debug.Log("未知");
break;
}
}
private void OnDestroy()
{
EventManager.getInstance().RemoveEventListener("InputDown", CheckInputDown);
EventManager.getInstance().RemoveEventListener("InputUp", CheckInputUp);
}
}
相关链接
Unity程序基础框架__单例基类模块
Unity程序基础框架__缓存池模块
Unity程序基础框架__事件中心模块
Unity程序基础框架__公共Mono模块
Unity程序基础框架__场景切换模块
Unity程序基础框架__资源加载模块
Unity程序基础框架__输入控制模块
Unity程序基础框架__事件中心模块基类优化
Unity程序基础框架__音效管理模块
Unity程序基础框架__UI管理模块