在上一个小项目中我们把系统自带的鼠标光标改成了一个瞄准准星的样式(项目运行时,在Game视图下),但是没有详细介绍,这里我们就详细介绍一下改变鼠标光标的两种方法。
一 隐藏鼠标光标,绘制一个图片代替
首先隐藏鼠标光标,直接用
Cursor.visible = false;
就可以实现了,然后就是我们自己绘制图片来代替光标,这里的代码要写在OnGUI方法中:
public Texture2D mousepic;//要代替鼠标光标的图片,是一个瞄准星图片
void OnGUI()
{
Vector2 mouse_Pos = Input.mousePosition;//获取鼠标点击位置
GUI.DrawTexture(new Rect(mouse_Pos.x-15, Screen.height - mouse_Pos.y-15, 30, 30), mousepic); //自己绘制鼠标图片,图片的大小可以自己设置,两个30分别表示图片的宽高;
其中new Rect里面的四个参数前两个是绘制图片的位置(距离屏幕的左边和上边),后面两个是绘制图片的大小。
这里画图说明一下(图丑人不丑= =):
这里要说明一下,new Rect前两个参数根据图片做减法运算的话,在Game视图中会有误差。
二 利用系统自带的方法直接更换光标样式
这种方法有个前提,就是图片的格式必须是Cursor格式。然后我们写入以下代码:
Cursor.SetCursor(mousepic, new Vector2(mousepic.width/2,mousepic.height/2), CursorMode.Auto);//用系统自带的方法更换鼠标图片,图片格式必须是Cursor
方法里面的参数
用这种方法不能隐藏鼠标光标,因为它是系统方法代替鼠标光标,隐藏鼠标光标的话,图片也不会显示了。我们再用一张图来解释其中的第二个参数vector2:
Vector2表示鼠标点击的有效点,通常Windows的hotspot是左上角那个点,即Vector2.Zero(也就是new Vector2(0,0)),这里我们需要移动这个有效点,所以要设置为 new Vector2(mousepic.width/2,mousepic.height/2),其中想x,y参数都是图片宽高的一半。
然后第三个参数,有些机器支持直接在硬件上设置鼠标图片,有些不支持,硬件支持时用Auto。
网友评论