【Unity】Windowsのマウスイベントをシミュレートする
Post : 2022/10/10 Update : 2022/10/10
需要が有るのか無いのかは分かりませんが、UnityでWindowsのマウスイベントを発行してみます。
イベント発行用のMouseSimulatorクラスを作成してその中に書いていきます。
1.クリックしてみる
マウスのイベントを発行するためにmouse_event関数を使います。
mouse_event関数はuser32.dllに実装されているためDllImport属性を使用して下のように宣言していきます。
using UnityEngine;
using System.Runtime.InteropServices; //追加
public class MouseSimulator : MonoBehaviour
{
//追加
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
}
クリックのイベントはマウスがダウン->アップの順番で発行されるので
とりあえず左マウスのアップダウンを宣言します
using UnityEngine;
using System.Runtime.InteropServices; //追加
public class MouseSimulator : MonoBehaviour
{
private const int MOUSEEVENTF_LEFTDOWN = 0x0002; //左マウスダウン
private const int MOUSEEVENTF_LEFTUP = 0x0004; //左マウスアップ
//----省略----//
キーボードのQで左クリックが発行されるように、Updateに書いていきます。
void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
// マウスの左ボタンダウン
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
}
else if (Input.GetKeyUp(KeyCode.Q))
{
// マウスの左ボタンアップ
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
else if (Input.GetMouseButtonDown(0))
{
Debug.Log("左マウスボタンダウン!");
}
else if (Input.GetMouseButtonUp(0))
{
Debug.Log("左マウスボタンアップ!");
}
}
Qキーを押下でマウスダウン、押上でマウスアップのイベントが発行されました。
(かなりニッチ内容だな)