我目前正在制作一款Unity游戏,我有以下问题:
我有一个游戏对象(面板),在这个面板上我有多个TextMeshProUGUI显示">保存负载",">选项",">";和">"。我想这样做,当玩家用鼠标悬停在其中一个对象上时,字体颜色会改变或发光。然而,我无法掌握如何真正使它发生。每当我开始游戏时,控制台就会打印出所有的日志,甚至在我徘徊在物体上方之前。当我执行此操作后,日志不再打印。
到目前为止,我有以下代码:
public class OptionsHoverSkript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
OnMouseEnter();
OnMouseExit();
}
// Update is called once per frame
void Update()
{
}
private void OnMouseEnter()
{
// Get the game object.
GameObject[] initialColorText = GameObject.FindGameObjectsWithTag("HoverText");
foreach (var texts in initialColorText)
{
// Get the TextMeschProUGUI component from the object.
TextMeshProUGUI newColorText = texts.GetComponent<TextMeshProUGUI>();
string anotherText = newColorText.text;
if (anotherText == "Save")
{
Debug.Log("Log1111111111111");
}
else if (anotherText == "Load")
{
Debug.Log("Log222222222");
}
}
// Make it glow.
// newColorText.fontSharedMaterial.SetColor(ShaderUtilities.ID_GlowColor, new Color32(215, 127, 60, 255));
}
private void OnMouseExit()
{
Debug.Log("ARGH / ANGRY ARNOLD VOICE!!");
}
这里有两个问题。首先是评论中提到的那个。您不需要像其他人在评论中所说的那样手动调用OnMouseEnter()
。
但是既然你说它之前没有被调用,我们可以假设你使用的是新的输入系统,而不是旧的输入管理器快速入门指南
在未来,你应该提供更多的细节,让人们为你提供一个答案。了解Unity版本和使用的包是很重要的。如果我的假设是正确的,按以下方式修改代码应该会产生期望的结果。
public class OptionsHoverSkript : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public void OnPointerEnter(PointerEventData eventData)
{
// Get the game object.
GameObject[] initialColorText = GameObject.FindGameObjectsWithTag("HoverText");
foreach (var texts in initialColorText)
{
// Get the TextMeschProUGUI component from the object.
TextMeshProUGUI newColorText = texts.GetComponent<TextMeshProUGUI>();
string anotherText = newColorText.text;
if (anotherText == "Save")
{
Debug.Log("Log1111111111111");
}
else if (anotherText == "Load")
{
Debug.Log("Log222222222");
}
}
// Make it glow.
// newColorText.fontSharedMaterial.SetColor(ShaderUtilities.ID_GlowColor, new Color32(215, 127, 60, 255));
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("ARGH / ANGRY ARNOLD VOICE!!");
}
更多的细节可以在这个非常详细的回答中找到。