由于我目前正在开发基于Unity Engine的游戏,我需要一个PointerEnter EventTrigger来动态更改我的文本。具体做法是:
如果用户在MainMenu中将鼠标悬停在文本上,我想要一个指针指向他指向的选项。
因此,从Options
开始,文字应转向▶ Options
。
我所做的是以下内容:
Text text;
string ContinueText = "▶ Continue";
void Awake()
{
// Set up the reference.
text = GetComponent<Text>();
}
public void Test()
{
text.text = ContinueText;
}
但如果我将鼠标悬停在文字上,我就会
NullReferenceException:未将对象引用设置为对象的实例
指向text.text = ContinueText;
所以我在网上搜索,发现在 Awake()之前有时会调用void Update()
,错误仍然保持不变。如果需要,Canvas-Text被命名为“Text_Options”。
感谢您帮助我!
答案 0 :(得分:1)
这是一个工作示例。
具有空游戏对象的画布(具有垂直布局组,但不相关)是两个文本对象的容器。
我已经添加了两个事件触发器,分别是OnPointerEnter和OnPointerExit。两个文本对象都有我的脚本HoverText
:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class HoverText : MonoBehaviour
{
Text text;
public string content = "Text A";
public string contentHighlighted = "▶ Text A";
void Awake()
{
text = GetComponent<Text>();
text.text = content;
}
public void Highlight()
{
text.text = contentHighlighted;
}
public void UnHighlight()
{
text.text = content;
}
}
Text_A
本身就是游戏对象,它分别是事件触发器和Text_B
本身。两个不同文本内容的公共字符串是通过检查器设置的(脚本中的默认值实际上与我的示例中的Text_A
匹配)。
那就好了。