将GUI.Label绘制到鼠标位置

时间:2018-05-07 08:11:01

标签: c# unity3d

嘿,我想知道你是否可以将GUI.Label绘制到鼠标位置,以及如何做到这一点? 我目前在Unity C#中编写脚本。

脚本布局:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {

    public bool Hover = false;

    void OnMouseOver()
    {
        Hover = true;
    }

    void OnMouseExit()
    {
        Hover = false;
    }

    void OnGUI()
    {
        if(Hover = true)
        {
        GUI.Label(new Rect(//Transform to mouse positon))
        }
    }
}

2 个答案:

答案 0 :(得分:3)

使用Input.mousePosition创建传递给Rect的{​​{1}}。请注意,这两个都使用屏幕坐标但屏幕左下角的GUI.Label是(0,0),而Input.mousePosition使用的Rect左侧是屏幕是(0,0)。因此,您需要像这样翻转y值:

GUI.Label

有关详情,请参阅Unity Input.mousePositionGUI.Label

上的文档

答案 1 :(得分:-1)

您需要将屏幕坐标(鼠标位置)转换为GUI坐标。

void OnGUI()
{
    if(Hover = true)
    {
        Vector2 screenPos = Event.current.mousePosition;
        Vector2 convertedGUIPos = GUIUtility.ScreenToGUIPoint(screenPos);

        GUI.Label(new Rect(convertedGUIPos.x, convertedGUIPos.y, width, height))
    }
}

我实际上没有测试过代码。

更多信息: https://docs.unity3d.com/ScriptReference/GUIUtility.ScreenToGUIPoint.html