在開發PC遊戲時咱們可能會有這樣的需求,當鼠標指針移動到某類遊戲物件上,改變指針顯示的圖標,或者乾脆一進入遊戲就設置全局指針圖標。在Unity中,有兩種方法知足這種需求,先說一下第一種方法。html
使用Unity的Cursor.SetCursor()接口app
看一下這個接口的文檔描述,this
Description
Specify a custom cursor that you wish to use as a cursor.spa
Call this method with a Texture2D to change the appearance of the hardware pointer (mouse cursor).3d
這裏咱們大概知道,這個接口的做用是把一個Texture2D紋理做爲硬件指針(鼠標指針)的顯示。
指針
再來看一下這個接口的參數,code
Parameters
texture | The texture to use for the cursor. To use a texture, you must first import it with `Read/Write`enabled. Alternatively, you can use the default cursor import setting. If you created your cursor texture from code, it must be in RGBA32 format, have alphaIsTransparency enabled, and have no mip chain. To use the default cursor, set the texture to `Null`. |
hotspot | The offset from the top left of the texture to use as the target point (must be within the bounds of the cursor). |
cursorMode | Allow this cursor to render as a hardware cursor on supported platforms, or force software cursor. |
texture不用解釋了,就是一張紋理。hotspot的意思是,鼠標目標點爲相對紋理左上角偏移多少的點,這個位置點不能超出紋理自己邊界。什麼意思呢?以下圖,咱們想用這張308*308大小的_CursorTexture 圖做爲替換的鼠標指針紋理,則須要設置hotspot爲 (87, 1),代碼爲orm
Cursor.SetCursor(_CursorTexture, new Vector2(87, 1), CursorMode.Auto);htm
若是不能正確設置hotspot座標,那實際效果就會 鼠標指針顯示的位置與咱們指望點擊的位置有誤差。blog
還有第三個參數,若是是CursorMode.Auto,則會在支持的平臺上用硬件渲染,選擇Auto模式的話,同一張大小的紋理,在不一樣硬件上渲染顯示出來的效果可能不同,受硬件影響。好比在MBP和普通PC上。若是選擇CursorMode.ForceSoftward,則會強制軟件渲染,不受硬件平臺影響,但效率沒Auto好。
好了,以上就是使用Cursor.SetCursor()方法設置鼠標指針的用法,注意hotspot和CursorMode這兩個參數。
另外一種方法,就是屏蔽系統Cursor,Screen.showCursor = false; 本身在鼠標位置畫一個圖標,也很簡單。具體作法之後再補充。