この記事でのバージョン
Unity 5.6.1f1
はじめに
今回はカーソルの設定方法についての記事です!
なお、カーソルの設定は
Unity4系ではScreen.lockCursorなど、Screenというクラスを使っていましたが、
Unity5系ではCursorというクラスを使うようになりました。
表示設定
まず、表示の設定です。これにはCursor.visibleを使います。
//カーソルを表示しない Cursor.visible = false;
上記のように設定すると、画面内に入ったカーソルが消えるようになります。
ビルドしたアプリでも同様です。
動作設定
次に動作の設定です。これにはCursor.lockStateを使います。
また、動作の設定には3種類があります。
1つ目のCursorLockMode.Noneは通常状態のカーソルの動きで、
他の動作設定にした後、元に戻す時に使います。
//カーソルの動作を変更しない、もしくはデフォルトの動作に戻す
Cursor.lockState = CursorLockMode.None;
2つ目のCursorLockMode.Lockedはカーソルを画面中央に固定します。
また、Cursor.visibleに関わらずカーソルは消えます。
なお、エディタ上ではカーソルは消えず、escキーを押すと固定が解除されます。
//カーソルを画面中央に固定
Cursor.lockState = CursorLockMode.Locked;
3つ目のCursorLockMode.Confinedはカーソルを画面から出せないようにします。
ただし、
Macやエディタ上では適用されず、Windows または Linux のビルド後のアプリにのみ適用されます。
//カーソルを画面内で表示
Cursor.lockState = CursorLockMode.Confined;
画像設定
最後に画像の設定です。これにはCursor.SetCursorを使います。
SetCursorは第1引数でカーソルの画像(Texture2D)を設定し、
第2引数でホットスポット(クリック判定する場所)をテクスチャの左上からの距離で設定、
第3引数でカーソルをどう表示するか(Auto OR ForceSoftware)を設定します。
//ホットスポットを画像中央に設定(TextureはTexture2D) Vector2 hotspot = Texture.texelSize * 0.5f; hotspot.y *= -1; //カーソルの画像をTexture、ホットスポットをhotspot、表示をForceSoftware(ソフトウェアカーソルを使用)に設定 Cursor.SetCursor(Texture, hotspot, CursorMode.ForceSoftware);
なお、カーソルの画像をnullにするとデフォルトのカーソルが表示されるようになります。
また、カーソルの表示をAuto(プラットフォームがサポートしているハードウェアカーソルを使用)に
設定した場合、Macのappだとカーソルが表示されなくなりました。