(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

カーソルの設定【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.6.1f1


はじめに

今回はカーソルの設定方法についての記事です!


なお、カーソルの設定は

Unity4系ではScreen.lockCursorなど、Screenというクラスを使っていましたが、



Unity5系ではCursorというクラスを使うようになりました。





表示設定

まず、表示の設定です。これにはCursor.visibleを使います。

//カーソルを表示しない
Cursor.visible = false;


上記のように設定すると、画面内に入ったカーソルが消えるようになります。

ビルドしたアプリでも同様です。


f:id:kan_kikuchi:20170522060410g:plain


動作設定

次に動作の設定です。これにはCursor.lockStateを使います。

また、動作の設定には3種類があります。


1つ目のCursorLockMode.Noneは通常状態のカーソルの動きで、

他の動作設定にした後、元に戻す時に使います。

//カーソルの動作を変更しない、もしくはデフォルトの動作に戻す
Cursor.lockState = CursorLockMode.None;


2つ目のCursorLockMode.Lockedはカーソルを画面中央に固定します。

また、Cursor.visibleに関わらずカーソルは消えます。

なお、エディタ上ではカーソルは消えず、escキーを押すと固定が解除されます。

//カーソルを画面中央に固定
Cursor.lockState = CursorLockMode.Locked;

f:id:kan_kikuchi:20170523060124g:plain


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);

f:id:kan_kikuchi:20170523064529g:plain

なお、カーソルの画像をnullにするとデフォルトのカーソルが表示されるようになります。

また、カーソルの表示をAuto(プラットフォームがサポートしているハードウェアカーソルを使用)に

設定した場合、Macのappだとカーソルが表示されなくなりました。