Как я могу использовать флаг, чтобы изменить курсор мыши на значение по умолчанию или другую текстуру? - PullRequest
2 голосов
/ 22 апреля 2020

Первый скрипт, который обрабатывает курсор мыши:

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

1 Ответ

2 голосов
/ 22 апреля 2020

В вашем HandleMouseCursor::setMouse() просто используйте useDefaultCursor, как вы и предполагали, и напишите:

void setMouse()
{
    if (useDefaultCursor)
        Cursor.SetCursor(null, hotSpot, cursorMode);
    else
        Cursor.SetCursor(mouse, hotSpot, cursorMode);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...