如何使用flag将鼠标指针改为默认或其他纹理?

问题描述 投票:0回答:1

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

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,如果为真,则使用常规的默认鼠标光标,如果为假,则使用公共字段中的鼠标纹理,如果有任何纹理分配到字段中,如果没有任何纹理分配,则再次使用默认鼠标光标。

c# unity3d
1个回答
2
投票

在你的 HandleMouseCursor::setMouse() 就用 useDefaultCursor 如你所愿,并写。

void setMouse()
{
    if (useDefaultCursor)
        Cursor.SetCursor(null, hotSpot, cursorMode);
    else
        Cursor.SetCursor(mouse, hotSpot, cursorMode);
}
© www.soinside.com 2019 - 2024. All rights reserved.