unity3d 控制滑鼠的移動範圍

來源:互聯網
上載者:User

在一些論壇上看到有人問在unity裡面控制滑鼠的移動範圍,有二種方法,一個是調用windows 系統的 user32.dll的ClipCursor函數 

再一種就是 通過Cursor.SetCursor函數

這裡就介紹一下 第一種方法吧,不說廢話了  直接上代碼

 

[DllImport( "user32.dll", CharSet = CharSet.Auto, ExactSpelling = true )]

[return: MarshalAs( UnmanagedType.Bool )]

public static extern bool ClipCursor( ref RECT rcClip );

[DllImport( "user32.dll" )]

[return: MarshalAs( UnmanagedType.Bool )]

public static extern bool GetClipCursor( out RECT rcClip );

[DllImport( "user32.dll" )]

static extern int GetForegroundWindow( );

[DllImport("user32.dll")]

[return: MarshalAs( UnmanagedType.Bool )]

static extern bool GetWindowRect( int hWnd, ref RECT lpRect );

 

[StructLayout( LayoutKind.Sequential )]

public struct RECT

{

    public int Left;

    public int Top;

    public int Right;

    public int Bottom;

    public RECT( int left, int top, int right, int bottom )

    {

        Left = left;

        Top = top;

        Right = right;

        Bottom = bottom;

    }

}

 

RECT currentClippingRect;

RECT originalClippingRect = new RECT( );

 

void Start()

{

    hndl = GetForegroundWindow( );

    GetWindowRect( hndl, ref currentClippingRect );

    GetClipCursor( out originalClippingRect );

    ClipCursor( ref currentClippingRect);

}

 

void OnApplicationQuit()

{

    ClipCursor( ref originalClippingRect );

}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.