第一个处理鼠标光标的脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HandleMouseCursor : MonoBehaviour
{
public bool useDefaultCursor = true;
public Texture2D mouse;
public Texture2D hand;
public Texture2D grab;
public CursorMode cursorMode = CursorMode.Auto;
public Vector2 hotSpot = Vector2.zero;
// Use this for initialization
void Start ()
{
if(useDefaultCursor == true)
{
mouse = Texture2D.def
}
setMouse();
}
// Update is called once per frame
void Update ()
{
}
public void setMouse()
{
Cursor.SetCursor(mouse, hotSpot, cursorMode);
}
public void setHand()
{
Cursor.SetCursor(hand, hotSpot, cursorMode);
}
public void setGrab()
{
Cursor.SetCursor(grab, hotSpot, cursorMode);
}
}
我添加了一个标志:useDefaultCursor,然后试着开始使用它。
if(useDefaultCursor == true)
{
mouse = Texture2D.def
}
但不知道如何继续 Texture2D没有默认属性。
第二个脚本使用了第一个方法。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UpdateCursor : MonoBehaviour
{
HandleMouseCursor cursor;
bool carrying;
// Use this for initialization
void Start ()
{
cursor = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<HandleMouseCursor>();
}
// Update is called once per frame
void Update ()
{
if (carrying)
cursor.setGrab();
}
private void OnMouseEnter()
{
cursor.setHand();
}
private void OnMouseExit()
{
cursor.setMouse();
}
private void OnMouseDown()
{
carrying = true;
}
private void OnMouseUp()
{
carrying = false;
cursor.setMouse();
}
}
我想做的是使用标志useDefaultCursor,如果为真,则使用常规的默认鼠标光标,如果为假,则使用公共字段中的鼠标纹理,如果有任何纹理分配到字段中,如果没有任何纹理分配,则再次使用默认鼠标光标。
在你的 HandleMouseCursor::setMouse()
就用 useDefaultCursor
如你所愿,并写。
void setMouse()
{
if (useDefaultCursor)
Cursor.SetCursor(null, hotSpot, cursorMode);
else
Cursor.SetCursor(mouse, hotSpot, cursorMode);
}