カーソルをどのように扱うか。
Locked の場合、カーソルは自動的に中央に固定され、画面から離れられなくなります。このモードは主に Cursor.visible を false にして使用します。
Confined の場合、カーソルは普段通り動作しますが、画面内に制限されます。
Web プレイヤーではカーソルはユーザーがコンテンツをクリックし、かつ、ユーザーがカーソルをコンテンツ画面から移動させない場合にのみ、Locked/Confined のままになります。
ユーザーがエスケープキーを押すか他のアプリケーションに切り替えた後はカーソルが通常状態に戻ります。
カーソルの状態はフルスクリーンモードを解除した後もリセットされます。
上質なユーザー体験のために、ボタンを押した結果としてカーソルにロックや制限をかけることを推奨しています。
例えばゲームの一時停止やゲームメニューの表示のために、カーソルがリセットされているか確認もするべきです。
Web プレイヤーとエディターでは 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 (); } }