【3D】カーソルを変化させる【Unity6】

unity技術

マウスカーソルを指定画像に変化させます。
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」型にしておいたほうが無難かもしれません

コメント