c# - 我有锁定光标(Unity)的问题?
问题描述
以下代码仅在按下 Escape 键后左键单击鼠标时锁定光标。谁能建议我克服这个问题的方法?
public class lockCursor : MonoBehaviour
{
public bool locked = true;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (locked == false)
{
Debug.Log("locked");
Cursor.lockState = CursorLockMode.Locked;
locked = true;
}
else
{
Debug.Log("Unlocked");
Cursor.lockState = CursorLockMode.None;
locked = false;
}
}
}
}
解决方案
正如API中所说Cursor.lockState
在编辑器中,当按下退出键或切换应用程序时,光标会自动重置。
由于逃生在 Unity 编辑器中具有特殊作用,因此 GameView 在按下它时会失去焦点。
解决这个问题并没有真正的(微不足道的)方法,因为它需要在 Unity 编辑器本身有机会处理该转义键之前拦截他们的按键。(这总是会在传递给播放器之前发生 -> 您的代码。)
但是,您可以做的只是仅对编辑器使用不同的 KeyCode 并仅在诸如之类的构建中转义
#if UNITY_EDITOR
if(Input.GetKeyDown(KeyCode.E))
#else
if(Input.GetKeyDown(KeyCode.Escape))
#endif
{
...
您可以E
仅在 Unity 编辑器本身内将 替换为您希望用于“模拟转义键”的任何其他 KeyCode。(另见平台相关编译)
推荐阅读
- javascript - 如何在 html 中添加 Onclick
- asynchronous - 输入'未来
' 不是类型 'List 的子类型 ' - electron - 在工作区更改时隐藏电子应用程序窗口(在 macOS 上)
- python - 在 django 中安装 Postgresql 数据库的问题
- javascript - 如何修复 localhost 中的 react cors 错误?
- unity3d - Unity collison 未检测到 2d
- python - 使用 Pythin 脚本从 Outlook 下载附件
- qemu - 在 QEMU 中引导内核 - PFLASH:可能的错误 - 写入块确认
- javascript - 如何将窥视效果从悬停更改为滚动
- lua - 我如何让surface.DrawTexturedRectRotated() 从左边旋转?