国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 模擬鼠標(biāo)點擊操作

這篇具有很好參考價值的文章主要介紹了Unity 模擬鼠標(biāo)點擊操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

有個奇奇怪怪的BUG,需要定時模擬鼠標(biāo)點擊

就想到了這個騷操作。

C#本身帶的類庫中沒有關(guān)于鼠標(biāo)操作的函數(shù)庫,需要引用微軟的dll。
重點需要引入user32.dll,可以在C:\Windows\System32文件夾中找到,最好不要用網(wǎng)上下的,用本機的,我就吃了這個虧。

unity模擬鼠標(biāo)點擊,筆記,unity,計算機外設(shè),c#

unity引入all

把dll放到unityAssets/Plugins文件夾下,
unity模擬鼠標(biāo)點擊,筆記,unity,計算機外設(shè),c#

打包時系統(tǒng)自動把dll打包到
unity模擬鼠標(biāo)點擊,筆記,unity,計算機外設(shè),c#

代碼

using System;

public class MouseSimulater
{
    #region DLLs
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern int SetCursorPos(int x, int y);
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern void mouse_event(MouseEventFlag dwFlags, int dx, int dy, uint dwData, UIntPtr dwExtraInfo);

    // 方法參數(shù)說明
    // VOID mouse_event(
    //     DWORD dwFlags,         // motion and click options
    //     DWORD dx,              // horizontal position or change
    //     DWORD dy,              // vertical position or change
    //     DWORD dwData,          // wheel movement
    //     ULONG_PTR dwExtraInfo  // application-defined information
    // );

    [Flags]
    enum MouseEventFlag : uint
    {
        //移動鼠標(biāo) 
        Move = 0x0001,
        //模擬鼠標(biāo)左鍵按下 
        LeftDown = 0x0002,
        //模擬鼠標(biāo)左鍵抬起 
        LeftUp = 0x0004,
        //模擬鼠標(biāo)右鍵按下 
        RightDown = 0x0008,
        //模擬鼠標(biāo)右鍵抬起 
        RightUp = 0x0010,
        //模擬鼠標(biāo)中鍵按下 
        MiddleDown = 0x0020,
        //模擬鼠標(biāo)中鍵抬起 
        MiddleUp = 0x0040,
        XDown = 0x0080,
        XUp = 0x0100,
        //標(biāo)示是否采用絕對坐標(biāo) 
        Wheel = 0x0800,
        VirtualDesk = 0x4000,
        Absolute = 0x8000
    }
    #endregion

    // Unity屏幕坐標(biāo)從左下角開始,向右為X軸,向上為Y軸
    // Windows屏幕坐標(biāo)從左上角開始,向右為X軸,向下為Y軸

    /// <summary>
    /// 移動鼠標(biāo)到指定位置(使用Unity屏幕坐標(biāo)而不是Windows屏幕坐標(biāo))
    /// </summary>
    public static bool MoveTo(float x, float y)
    {
        if (x < 0 || y < 0 || x > UnityEngine.Screen.width || y > UnityEngine.Screen.height)
            return true;

        if (!UnityEngine.Screen.fullScreen)
        {
            UnityEngine.Debug.LogError("只能在全屏狀態(tài)下使用!");
            return false;
        }
	// SetCursorPos 函數(shù)
	//把光標(biāo)移到屏幕的指定位置。(ps:是整個屏幕的坐標(biāo),相對于屏幕左上角的絕對位置)

	//參數(shù)

	//X 指定光標(biāo)的新的X坐標(biāo),以屏幕坐標(biāo)表示。
	//Y 指定光標(biāo)的新的Y坐標(biāo),以屏幕坐標(biāo)表示。
	//返回值
	//如果成功,返回非0值
	//如果失敗,返回值是0
        SetCursorPos((int)x, (int)(UnityEngine.Screen.height - y));
        return true;
    }

    // 左鍵單擊
    public static void LeftClick(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
        //mouse_event 函數(shù)
		//綜合鼠標(biāo)移動和按鈕點擊。該方法包含鼠標(biāo)左右移動及點擊操作。
		//dx
		//指定鼠標(biāo)沿x軸的絕對位置或者從上次鼠標(biāo)事件產(chǎn)生以來移動的數(shù)量,依賴于MOUSEEVENTF_ABSOLUTE的設(shè)置。給出的絕對數(shù)據(jù)作為鼠標(biāo)		的實際X坐標(biāo);給出的相對數(shù)據(jù)作為移動的mickeys數(shù)。一個mickey表示鼠標(biāo)移動的數(shù)量,表明鼠標(biāo)已經(jīng)移動。
		//dy
		//指定鼠標(biāo)沿y軸的絕對位置或者從上次鼠標(biāo)事件產(chǎn)生以來移動的數(shù)量,依賴于MOUSEEVENTF_ABSOLUTE的設(shè)置。給出的絕對數(shù)據(jù)作為鼠標(biāo)的實際y坐標(biāo),給出的相對數(shù)據(jù)作為移動的mickeys數(shù)。
		//dwData
		//如果dwFlags為MOUSEEVENTF_WHEEL,則dwData指定鼠標(biāo)輪移動的數(shù)量。正值表明鼠標(biāo)輪向前轉(zhuǎn)動,即遠(yuǎn)離用戶的方向;負(fù)值表明鼠標(biāo)輪向后轉(zhuǎn)動,即朝向用戶。一個輪擊定義為WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,則dWData應(yīng)為零。
		//dwExtraInfo
		//指定與鼠標(biāo)事件相關(guān)的附加32位值。應(yīng)用程序調(diào)用函數(shù)GetMessageExtraInfo來獲得此附加信息
            mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
            mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 右鍵單擊
    public static void RightClick(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.RightDown, 0, 0, 0, UIntPtr.Zero);
            mouse_event(MouseEventFlag.RightUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 中鍵單擊
    public static void MiddleClick(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.MiddleDown, 0, 0, 0, UIntPtr.Zero);
            mouse_event(MouseEventFlag.MiddleUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 左鍵按下
    public static void LeftDown(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 左鍵抬起
    public static void LeftUp(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 右鍵按下
    public static void RightDown(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.RightDown, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 右鍵抬起
    public static void RightUp(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.RightUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 中鍵按下
    public static void MiddleDown(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.MiddleDown, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 中鍵抬起
    public static void MiddleUp(float x = -1, float y = -1)
    {
        if (MoveTo(x, y))
        {
            mouse_event(MouseEventFlag.MiddleUp, 0, 0, 0, UIntPtr.Zero);
        }
    }

    // 滾輪滾動
    public static void ScrollWheel(float value)
    {
        mouse_event(MouseEventFlag.Wheel, 0, 0, (uint)value, UIntPtr.Zero);
    }
}

Unity簡單調(diào)用

	// 模擬鼠標(biāo)左鍵按下
				MouseSimulater.LeftClick(450,850);

參數(shù)釋義

unity模擬鼠標(biāo)點擊,筆記,unity,計算機外設(shè),c#

參考

https://www.cnblogs.com/falcon-fei/p/11396740.html
https://blog.csdn.net/keneyr/article/details/98079695
https://blog.csdn.net/qq_21397217/article/details/78488072文章來源地址http://www.zghlxwxcb.cn/news/detail-755159.html

到了這里,關(guān)于Unity 模擬鼠標(biāo)點擊操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • unity制作游戲,點擊鼠標(biāo)左鍵,展示屏幕震動效果

    在Unity中實現(xiàn)點擊鼠標(biāo)左鍵展示屏幕震動效果可以通過以下步驟進(jìn)行: 創(chuàng)建一個新的C#腳本,例如\\\"ScreenShake.cs\\\",并將其附加到想要添加屏幕震動效果的游戲?qū)ο笊稀?在腳本中定義一個變量來控制震動的幅度,例如 public float shakeAmount = 0.1f; 。 在Update函數(shù)中檢測鼠標(biāo)左鍵點擊事

    2024年02月12日
    瀏覽(26)
  • Unity 鼠標(biāo)點擊或觸摸任意拖動UGUI的方法

    在Unity中,如果要通過鼠標(biāo)拖到UI組件或者觸摸移動UI組件,可以使用EventSystems下的方法。 具體實現(xiàn)如下: 新建一個腳本,DragController.cs: 然后把該腳本拉到UI組件中,運行后我們可以通過鼠標(biāo)拖到UI組件,在觸摸屏上,我們也可以通過觸摸UI組件拖動。 效果如: Unity 鼠標(biāo)點擊

    2024年01月16日
    瀏覽(25)
  • unity手指、鼠標(biāo)滑動實現(xiàn)物體360度旋轉(zhuǎn)、點擊按鈕實現(xiàn)物體旋轉(zhuǎn)

    unity手指、鼠標(biāo)滑動實現(xiàn)物體360度旋轉(zhuǎn)、點擊按鈕實現(xiàn)物體旋轉(zhuǎn)

    先創(chuàng)建一個ObjectRotation 腳本 之后將該腳本拖動到需要轉(zhuǎn)動的object上 因為如果每次都真機模擬回很麻煩,所以我加入了讓鼠標(biāo)代替手指滑動的腳本來代替手指輸入 同樣的也是先創(chuàng)建一個MouseRow 腳本 最后我還需要某筆畫沿著坐標(biāo)旋轉(zhuǎn),代碼如下: 里面有我的其他參數(shù),如果讀

    2024年02月11日
    瀏覽(24)
  • 2d平面unity,鼠標(biāo)點擊某個位置,人物角色朝這個方向移動

    2d平面unity,鼠標(biāo)點擊某個位置,人物角色朝這個方向移動 如果我們沒有將鼠標(biāo)點擊位置轉(zhuǎn)換為世界坐標(biāo)系中的位置,而是直接將屏幕坐標(biāo)系中的位置作為角色移動的目標(biāo)位置,那么可能會發(fā)生以下兩種情況: 角色會偏離目標(biāo)位置 由于屏幕坐標(biāo)系中的位置和世界坐標(biāo)系中的位

    2024年02月06日
    瀏覽(39)
  • Unity 通過鼠標(biāo)控制模擬人物移動和旋轉(zhuǎn)視角

    Unity 通過鼠標(biāo)控制模擬人物移動和旋轉(zhuǎn)視角

    要通過鼠標(biāo)控制并模擬人物移動和轉(zhuǎn)換視角,將會使用射線檢測、鼠標(biāo)點擊和鼠標(biāo)水平移動,配合物體旋轉(zhuǎn)和移動方法共同實現(xiàn)。 首先搭建個由一個Plane地板和若干cube組成的簡單場景: 其次創(chuàng)建一個Capsule作為移動物體,并把攝像頭拉到該物體中。 創(chuàng)建以下腳本: ?把腳本拉

    2024年02月03日
    瀏覽(18)
  • 計算機視覺OpenCv學(xué)習(xí)系列:第四部分、鍵盤+鼠標(biāo)響應(yīng)操作

    計算機視覺OpenCv學(xué)習(xí)系列:第四部分、鍵盤+鼠標(biāo)響應(yīng)操作

    鍵盤響應(yīng)中有一個函數(shù)叫做 waitKey ,所有的獲取鍵盤鍵值都是通過waitKey函數(shù)實現(xiàn)的。 1.鍵盤響應(yīng)事件 cv.waitKey( [, delay] ) -- retval delay如果沒有聲明或者delay=0,表示一直阻塞 delay大于0,表示阻塞指定毫秒數(shù) retval返回的對應(yīng)鍵盤鍵值,注意:在不同的操作系統(tǒng)中可能會有差異! 典

    2024年02月09日
    瀏覽(32)
  • 計算機操作系統(tǒng)實驗-進(jìn)程調(diào)度模擬算法

    進(jìn)程調(diào)度是處理機管理的核心內(nèi)容。本實驗要求用高級語言編寫模擬進(jìn)程調(diào)度程序,以 便加深理解有關(guān)進(jìn)程控制快、進(jìn)程隊列等概念,并體會和了解優(yōu)先數(shù)算法和時間片輪轉(zhuǎn)算法 的具體實施辦法。 1.設(shè)計進(jìn)程控制塊 PCB 的結(jié)構(gòu),通常應(yīng)包括如下信息: 進(jìn)程名、進(jìn)程優(yōu)先數(shù)(

    2024年02月05日
    瀏覽(89)
  • 實現(xiàn)時間片輪轉(zhuǎn)算法(模擬)計算機操作系統(tǒng)實驗5:進(jìn)程調(diào)度算法模擬-RR

    實現(xiàn)時間片輪轉(zhuǎn)算法(模擬)計算機操作系統(tǒng)實驗5:進(jìn)程調(diào)度算法模擬-RR

    實驗內(nèi)容: 實現(xiàn)時間片輪轉(zhuǎn)算法(模擬),要求如下: 1、用到的數(shù)據(jù)結(jié)構(gòu) /* PCB / struct PCB { pid_t pid;//進(jìn)程 PID int state; //狀態(tài)信息,1 表示正在運行,0 表示暫停,-1 表示結(jié)束 unsigned long runned_time;//已運行時間 unsigned long need_running_time;//剩余運行時間 }; / PCB集合 */ struct PCB pcb[TOT

    2024年02月04日
    瀏覽(21)
  • Unity編程之簡易計算機

    Unity編程之簡易計算機

    效果如下 實現(xiàn)計算器的主要思路: 將(點擊按鍵)輸入的式子 存儲 起來并 計算 。 計算式子 輸入:式子的字符串 輸出:計算結(jié)果 這是一個經(jīng)典的隊列數(shù)據(jù)結(jié)構(gòu)應(yīng)用的問題,具體的解法無需贅述(網(wǎng)絡(luò)上有很多資源) 核心思想:用兩個隊列分別維護(hù)數(shù)字和運算符,對于不

    2024年02月01日
    瀏覽(29)
  • 學(xué)習(xí)unity需要的計算機配置及預(yù)算(更新)

    unity對電腦的配置要求還是比較高的 ,這類處理圖形界面的東西都是需要消耗一些計算機資源的,但Unity的建模、蒙皮、渲染、加特效等操作是比較吃電腦配置的,所以需要的配置也相對好一些。 如果你在家使用的話建議用臺式機性價比高一些,如果你用筆記本的話可以選擇

    2024年02月04日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包