您当前的位置: 首页 >  unity

野奔在山外的猫

暂无认证

  • 3浏览

    0关注

    85博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【解决】旧 Unity InputSystem 下的按键未响应的解决方案

野奔在山外的猫 发布时间:2022-07-11 20:43:38 ,浏览量:3

开发平台:Unity 编程平台:Visual Studio 2020以上 使用语言:C#  

问题描述

  旧版 InputSystem 下脚本配置的按键与 Unity 编辑器内置热键冲突,导致 MonoBahaviour 下按键逻辑未正确执行。  

解决方案:划分平台限制

方式一: 使用 #if…#EndIf   例如 实现 Ctrl + 1 的按键逻辑。在 Unity 中,属于快速切换面板窗口的热键。在编辑器中调试脚本,容易出现热键优先响应的情况。为保证测试可用性。选择在基础上添加额外的按键进行测试。于是 使用 #IF…#EndIF

public void Update()
{
#if UNITY_EDITOR
	if (Input.GetKey(KeyCode.LeftCtrl) && Input.GetKey(KeyCode.Tab) && Input.GetKeyDown(KeyCode.Alpha1))
	{
		// Unity 编辑器下执行
	}
#else
	if (Input.GetKey(KeyCode.LeftCtrl) && Input.GetKeyDown(KeyCode.Alpha1))
	{
		// 工程打包后内部执行
	}
#endif

}

  甚至可以选择 Application.isEditor 进行 If - else 判断当前运行平台。   方式二:使用特殊的自封装输入系统

public bool InputAnyCtrlOrShift()
{
	return Input.GetKey(KeyCode.LeftCtrl) || Input.GetKey(KeyCode.RightCtrl) || Input.GetKey(KeyCode.LeftShift) ||  Input.GetKey(KeyCode.RightShift);
}

  使用该输入方法替代原 Input.GetKey(KeyCode.LeftCtrl)。可扩大响应类别选择。有助于实际测试。

关注
打赏
1659777066
查看更多评论
立即登录/注册

微信扫码登录

0.0384s