カーソルをどのように扱うか。
Locked の場合、カーソルは自動的にビューの中央に固定され、離れられなくなります。Cursor.visible の値にかかわらず、この状態ではカーソルは非表示になります。lockState を他の値に変えると、再び Cursor.visible で表示を制御できるようになります。
Confined の場合、カーソルは普段通り動作しますが、画面内に制限されます。
To provide a good user experience it is recommended to only lock or confine the cursor as a result of pressing a button.
Also you should check if the cursor was reset, in order to e.g. pause the game or bring up a game menu.
In the Editor the cursor will automatically be reset when you press escape.
In the Standalone Player you have full control over the mouse cursor, thus it won't automatically be reset unless you switch applications.
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 (); } }