Unity 模拟鼠标点击

1.Plugins 添加两个 dll

2.代码

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

public class RecordFunction : MonoBehaviour
{
    [DllImport("user32.dll")]
    private static extern int SetCursorPos(int x, int y);
    [DllImport("user32.dll")]
    static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

    //下面这个枚举也来自user32.dll
    [Flags]
    enum MouseEventFlag : uint
    {
        Move = 0x0001,
        LeftDown = 0x0002,
        LeftUp = 0x0004,
        RightDown = 0x0008,
        RightUp = 0x0010,
        MiddleDown = 0x0020,
        MiddleUp = 0x0040,
        XDown = 0x0080,
        XUp = 0x0100,
        Wheel = 0x0800,
        VirtualDesk = 0x4000,
        Absolute = 0x8000
    }

    bool hasMouseDown = false;

    void Start()
    {
        //模拟键盘输入
        SendKeys.Send("{BACKSPACE}");
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.Backspace))
        {
            Debug.Log("backspace is pressed");
        }

        if (!hasMouseDown)
        {
            if (Time.time > 2)
            {
                //模拟鼠标在一个按钮上点击,这个按钮会调用下面的CloseSelf()方法
                SetCursorPos(20, 20);
                mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
                mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
                hasMouseDown = true;
            }
        }
    }
    public void CloseSelf()
    {
        UnityEngine.Application.Quit();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39097425/article/details/83420373