开发平台: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)
。可扩大响应类别选择。有助于实际测试。