Should the cursor be visible?
#pragma strict
var wantedMode;
// Apply requested cursor state
function SetCursorState() {
Cursor.lockState = wantedMode;
// Hide cursor when locking
Cursor.visible = (CursorLockMode.Locked != wantedMode);
}
function 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();
}
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 (); } }