【问题标题】:How can I use flag to change the mouse cursor to default or to other texture?如何使用标志将鼠标光标更改为默认或其他纹理?
【发布时间】:2020-04-23 00:53:39
【问题描述】:

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

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】:

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

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

    【讨论】:

    • 确实如此。谢谢。
    猜你喜欢
    • 2023-01-14
    • 2012-06-07
    • 2012-05-31
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多