カーソルをデフォルトから変更する
Unityの設定からカーソルを変更する
編集 → プロジェクト設定 → Playerからデフォルトのカーソルに用意した素材をつける
カーソル素材のテクスチャタイプをカーソルに変更するのを忘れずに
この場合はゲームスタート時からずっと指アイコンとなるので、特定条件下でのみ変更したい場合はスクリプトから変更する
スクリプトからカーソルを変更する
スクリプトから変更する場合には
Cursor.SetCursor(Texture2D, hotspot, CursorMode)を使う
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CursorSelect : MonoBehaviour { public Texture2D handCursor; void Update() { if(Input.GetMouseButtonDown(0)) { Cursor.SetCursor(handCursor, Vector2.zero, CursorMode.Auto); } } }
これを適当なGameObjectにアタッチしてインスペクターからカーソル素材をつければOk
スクリプトからカーソルを変更することができた
特定オブジェクト上でのみカーソルを変更する
前回のコレに追加して紙ごみの上でのみカーソルを変更してみる
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class CursorSelect : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public Texture2D handCursor; public void OnPointerEnter(PointerEventData eventData) { Cursor.SetCursor(handCursor, new Vector2(handCursor.width / 2, handCursor.height / 2), CursorMode.Auto); } public void OnPointerExit(PointerEventData eventData) { Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); } }
OnPointerEnterとOnPointerExitでマウスがゲームオブジェクト範囲内外での挙動を定義できる
OnPointerEnter
ポインターがこの EventTrigger に関連したオブジェクトに入るとき、EventSystem に呼び出されます。OnPointerExit
ポインターがこの EventTrigger に関連したオブジェクトを出るとき、EventSystem に呼び出されます。
また、hotspotではテクスチャの左上からのオフセット距離を設定できるのでVector2.zeroよりもカーソルの中心を画像の真ん中に設定するといいかもしれない。特にFPSゲームのレティクルとか