Version: 2017.3
public static CursorLockMode lockState ;

描述

确定硬件指针是否锁定到视图的中心、受限于窗口或者根本不受限制。

锁定时,光标位于视图的中心且无法移动。无论 Cursor.visible 的值如何,光标在此状态下均不可见。

当受限时,光标表现正常,但限制在视图中。例如,在 Confined 模式下,如果应用程序在窗口中运行,鼠标光标将无法离开窗口。

要提供良好的用户体验,建议仅支持由用户操作(例如按下按钮)来锁定或限制光标。

光标状态可以由操作系统或 Unity 更改。因此,您应该检查光标的状态,例如当应用程序重新获得焦点或游戏状态发生变化以显示 UI 时。 在 Editor 中,按下 Esc 键或切换应用程序时,光标会自动重置。 在独立平台播放器中,您可以完全控制鼠标光标,但切换应用程序仍会重置光标。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { CursorLockMode wantedMode;

// Apply requested cursor state void SetCursorState() { Cursor.lockState = wantedMode; // Hide cursor when locking Cursor.visible = (CursorLockMode.Locked != wantedMode); }

void OnGUI() { GUILayout.BeginVertical(); // Release cursor on escape keypress if (Input.GetKeyDown(KeyCode.Escape)) Cursor.lockState = wantedMode = CursorLockMode.None;

switch (Cursor.lockState) { case CursorLockMode.None: GUILayout.Label("Cursor is normal"); if (GUILayout.Button("Lock cursor")) wantedMode = CursorLockMode.Locked; if (GUILayout.Button("Confine cursor")) wantedMode = CursorLockMode.Confined; break; case CursorLockMode.Confined: GUILayout.Label("Cursor is confined"); if (GUILayout.Button("Lock cursor")) wantedMode = CursorLockMode.Locked; if (GUILayout.Button("Release cursor")) wantedMode = CursorLockMode.None; break; case CursorLockMode.Locked: GUILayout.Label("Cursor is locked"); if (GUILayout.Button("Unlock cursor")) wantedMode = CursorLockMode.None; if (GUILayout.Button("Confine cursor")) wantedMode = CursorLockMode.Confined; break; }

GUILayout.EndVertical();

SetCursorState(); } }