public class CustomCursor : MonoBehaviour
{
//The texture that's going to replace the current cursor
public Texture2D cursorTexture;
//This variable flags whether the custom cursor is active or not
public bool ccEnabled = false;
void Start()
{
//Call the 'SetCustomCursor' (see below) with a delay of 2 seconds.
Invoke("SetCustomCursor",2.0f);
}
void OnDisable()
{
//Resets the cursor to the default
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
//Set the _ccEnabled variable to false
this.ccEnabled = false;
}
private void SetCustomCursor()
{
//Replace the 'cursorTexture' with the cursor
Cursor.SetCursor(this.cursorTexture, Vector2.zero, CursorMode.Auto);
Debug.Log("Custom cursor has been set.");
//Set the ccEnabled variable to ***e
this.ccEnabled = ***e;
}
}
上面的脚本中设置了两个公共变量:一个是2D贴图,光标使用的,以及一个布尔值,它是用来定义是不是要设置自定义光标(第7行和第10行)。这个布尔值不是这个脚本工作所必须的,但是,保留一个变量来标示当前光标是否已经改变是一个好主意。这样一来,如果必要的话,在脚本外部就可以检验当前光标的纹理。 跳转到该脚本的底部,定义了一个SetCustomCursor()方法(26行到33行)。在这段代码中,Cursor.SetCursor()方
法被调用。该方法有三个参数(第29行)。第一个参数是一个将要取代当前光标的2D纹理。第二个参数是一个二维向量
,它是目标点的偏移量 -- 调整点击注册点的位置。最后,第三个参数是通知Unity应该检测我们想要替换的光标是硬
件光标还是软件光标。 除此之外,这个方法打印出一条消息到控制台,用以确认当前光标已经被定义为2D贴图以及设置ccEnabled为真(30
行和32行)。回到该脚本的顶部,Start()方法只是延迟两秒(第15行)调用SetCustomCursor()方法。 OnDisable()方法只是通过传递null作为2D贴图到Cursor.SetCursor()方法中来重置当前光标为系统默认(18行到
24行)。 这样就行了!不要忘记在检查器中指定2D贴图: