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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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,如果为真,则使用常规的默认鼠标光标,如果为假,则使用公共字段中的鼠标纹理,如果有任何纹理分配到字段中,如果没有任何纹理分配,则再次使用默认鼠标光标。

答案

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

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

以上是关于如何使用flag将鼠标指针改为默认或其他纹理?的主要内容,如果未能解决你的问题,请参考以下文章

苹果系统如何设置鼠标指针的大小?

如何将代码更改为交换指针而不是使用“临时”指针?

在剪贴蒙版内悬停时从灰度更改为彩色

如何将鼠标指针箭头转换为手 onmouseover 链接或按钮。? [复制]

如何将动态图片变成鼠标指针?

有没有办法使用python将Windows鼠标光标更改为自定义光标?