マウスカーソルを指定画像に変化させます。
Unity依存カーソルの変更「ForceSoftware」とデバイス依存カーソルの変更「Auto」の2種類あるようです。
簡易版
- 素材画像設定 「Texture Type」タブ「Default」を「Cursor」に変更。
- C#スクリプト作成 「ForceSoftware」か「Auto」を選択。
オブジェクトにアタッチ。
画像変数に画像を指定。
素材画像の設定
Unityにインポートした画像のインスペクターを変更します。
「Texture Type」タブの「Default」を「Cursor」に変更します。
「Filter Mode」の変更はお好みで。
- Point(no filter)
ぼかし効果がなくエッジが強調されます。カーソルにはこちらがお薦めということです。 - Bilinear
ぼかし効果が適用されます。画像によってはこちらを選択も。
画像設定は以上です。
Unity依存カーソル「ForceSoftware」型で変更
Unity依存のカーソルを変更させます。
カーソル変更の有効・無効を制御するスクリプトを記述していきましょう。
「Assets」フォルダ内に新規スクリプトを作成します。
名前は任意です。今回は「CustomC」としました。
スクリプトファイル名「CustomC」とクラス名「CustomC」を一致させましょう。
スクリプトをコピペなどでいじっているとミスする場所です。
変数「customcursor」も一致させましょう。
using UnityEngine;
public class CustomC : MonoBehaviour
{
public Texture2D customcursor;
public void OnMouseEnter()
{
Cursor.SetCursor(customcursor, new Vector2(0, 0), CursorMode.ForceSoftware);
}
public void OnMouseExit()
{
Cursor.SetCursor(null, new Vector2(0, 0), CursorMode.ForceSoftware);
}
}
作成した「CustomC」スクリプトをオブジェクト「board_info_yu(ボード内の紙)」にアタッチします。
「board_info_yu(ボード内の紙)」のインスペクターにスクリプトが追加されます。
そのままスクリプトコンポーネント内のパブリック変数部分(customcursor)に変更したい画像(ma_glass)をドラッグして登録します。
スクリプト作業は以上です。
テストプレイ
「Game(ゲーム画面のほう)」にて、オブジェクト「board_info_yu(ボード内の紙)」にカーソルを合わせて動作を確認しましょう。
動画にするとOS依存のカーソルも同時に映ってしまうようです。
実況や動画などには不向きの方法かもしれません。
※ソフトによるものなのかは分からない状況です。
元画像との色味違い
「ForceSoftware」型でのカーソル変更をすると元画像との色味の違いがでます。
元画像での色を調整するしかないみたいですが、なかなかやっかいです。
濃くなるので、薄めの調整が必要。
ホットスポットの調整
マウスカーソルの画像で、どの部分で反応させるかを調整します。
ポイント部分は、画像の左上を0.0とし、左数値が横軸・右数値が縦軸になります。
ポイントにしたい座標を決めたら「new Vector2(0,0)」の数値を変更します。
テストプレイで確認しましょう。
デバイス依存カーソル「Auto」型の変更
WindowsなどのOS依存のカーソルを変更します。
「ForceSoftware」を「Auto」に書き換えましょう。
これでデバイス依存のカーソルで変更されるようになります。
虫眼鏡のレンズの部分にアルファ値(透明度)を使ってしまっているので、動画録画の際に色味がおかしいことになりました。
※ゲーム自体での動作時の色味に変化はありません。
「Auto」型の方は「ForceSoftware」型と違って、元画像の色味に変化はないのですが、画像サイズの変更ができません。
デバイス依存のカーソルサイズに固定されるようです。
「ForceSoftware」と「Auto」の違い
■ForceSoftware
- 画像サイズは変えられる。
- 色味がおかしくなる。
- 録画時にOSカーソルも同時に移る?
■Auto
- 画像サイズが変えられない。
- 色味の変化は無し。
- アルファ値(透明度)を使用している画像だと、動画時に色が変化?
カーソルはあまりいじらないほうが良さそうですが、変化させたい場合は「Auto」型にしておいたほうが無難かもしれません。
コメント