如何使用flag将鼠标光标更改为默认或其他纹理



处理鼠标光标的第一个脚本:

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标志,如果它为true,则使用常规默认鼠标光标如果为false,请使用公共字段中的鼠标纹理(如果有任何纹理指定给字段(。如果根本没有指定纹理,则再次使用默认的鼠标光标。

在您的HandleMouseCursor::setMouse()中,只需按照您的意愿使用useDefaultCursor,并写入:

void setMouse()
{
if (useDefaultCursor)
Cursor.SetCursor(null, hotSpot, cursorMode);
else
Cursor.SetCursor(mouse, hotSpot, cursorMode);
}

相关内容

最新更新