
[Siv3D] カーソルの見た目をカスタマイズする
既存のカーソルではなく、自ら描いたカーソルを使いたいということは、よくありましょう。
/// @brief カスタムのマウスカーソルを登録します。
/// @param name カスタムマウスカーソルの名前
/// @param image カスタムマウスカーソルの画像
/// @param hotSpot 画像中のクリック位置
/// @return カスタムのマウスカーソルの登録に成功した場合 true, それ以外の場合は false
bool RegisterCustomCursorStyle(StringView name, const Image& image, Point hotSpot = Point{ 0, 0 });
GitHubを読みますと、「RegisterCustomCursorStyle」というメソッドがありました。そこで、画像のPathからカーソルの登録を行う関数を作りました。
void registerCursorFromImage(String _path, String _cursorName, Point hotSpot = Point{0, 0})
{
// 画像を読み込む
Image img{_path};
// カーソルのStyleに登録
Cursor::RegisterCustomCursorStyle(
_cursorName,
img,
hotSpot);
}
これで、自作のカーソルがエンジンに登録されます。あとは、メインループの中に次のコードを追加すれば、その名前で登録されたカーソルが表示されます。
Cursor::RequestStyle(U"登録したカーソル名");
使用例
4日目(午前〜14:00):
— 貝時計 KaiTokei (@NosukeBei) March 29, 2024
pngファイルを読み込んで作ったカスタムカーソルです。SVGにしようかと思いましたが、特に問題なさそうですので、このまま行こうかと思います。ただ、SVGの扱いに関する知識は広まったので、良かったです#siv3d #カーソル #gamedev #ゲーム制作 #ゲーム開発 pic.twitter.com/7D1wdTxG0V
参考
1 種類につき 1 回だけ Cursor::RegisterCustomCursorStyle(name, image, hotSpot); して、毎フレーム Cursor::RequestStyle(name); です。
— Ryo Suzuki (@Reputeless) March 28, 2024