Version: 2021.3
public static string tooltip ;

描述

鼠标指针当前悬停在其上或具有键盘焦点的控件的工具提示。(只读)

创建 GUI 控件时,您可以为其传入工具提示。为此,请将内容参数更改为接受自定义的 GUIContent 对象, 而不是仅传入要显示的字符串。

当鼠标悬停在带有工具提示的控件上时,它会将全局 GUI.tooltip 值设置为您传入的工具提示。 如果鼠标未悬停在任何控件上,则该值将设置为具有键盘焦点的控件。 在 OnGUI 代码的末尾,您可以创建一个显示 GUI.tooltip 值的标签。

\ 当鼠标悬停在按钮上时,将在 Game 视图上显示 GUI 工具提示。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void OnGUI() { // Make a button using a custom GUIContent parameter to pass in the tooltip. GUI.Button(new Rect(10, 10, 100, 20), new GUIContent("Click me", "This is the tooltip"));

// Display the tooltip from the element that has mouseover or keyboard focus GUI.Label(new Rect(10, 40, 100, 40), GUI.tooltip); } }

可以使用元素的顺序创建“分层”的工具提示:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void OnGUI() { // This box is larger than many elements following it, and it has a tooltip. GUI.Box(new Rect(5, 35, 110, 75), new GUIContent("Box", "this box has a tooltip"));

// This button is inside the box, but has no tooltip so it does not // override the box's tooltip. GUI.Button(new Rect(10, 55, 100, 20), "No tooltip here");

// This button is inside the box, and HAS a tooltip so it overrides // the tooltip from the box. GUI.Button(new Rect(10, 80, 100, 20), new GUIContent("I have a tooltip", "The button overrides the box"));

// finally, display the tooltip from the element that has // mouseover or keyboard focus GUI.Label(new Rect(10, 40, 100, 40), GUI.tooltip); } }

工具提示还可用于实现 OnMouseOver/OnMouseOut 消息系统:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public string lastTooltip = " ";

void OnGUI() { GUILayout.Button(new GUIContent("Play Game", "Button1")); GUILayout.Button(new GUIContent("Quit", "Button2"));

if (Event.current.type == EventType.Repaint && GUI.tooltip != lastTooltip) { if (lastTooltip != "") { SendMessage(lastTooltip + "OnMouseOut", SendMessageOptions.DontRequireReceiver); }

if (GUI.tooltip != "") { SendMessage(GUI.tooltip + "OnMouseOver", SendMessageOptions.DontRequireReceiver); }

lastTooltip = GUI.tooltip; } }

void Button1OnMouseOver() { Debug.Log("Play game got focus"); }

void Button2OnMouseOut() { Debug.Log("Quit lost focus"); } }