Первый скрипт, который обрабатывает курсор мыши:
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, если это правда, использовать обычное значение по умолчанию курсор мыши, если он ложный, используйте текстуры мыши из полей publi c, если для этих полей назначены какие-либо текстуры. если текстуры не назначены вообще, снова используйте курсор мыши по умолчанию.