鼠标悬停时更改精灵

Change sprite on mouseover

我有一个 sprite 充当我游戏主菜单中的按钮。它有一个盒子碰撞器,我使用 OnMouseDown() 来记录按钮的点击。

我想在我的鼠标滑过按钮时改变 sprite。我知道我可以使用函数 OnMouseOver() 做一些事情,但我如何在 2 个精灵之间完全切换?

将鼠标功能放在一个空的父级 GameObject 上,并将其作为您想要的所有精灵的父级,然后通过父级 enable/disable 它们

其他选项:

  • 改用世界空间 UI 按钮(然后您可以使用内置的 spriteswap 转换和其他按钮方法:http://docs.unity3d.com/Manual/script-SelectableTransition.html
  • 添加 public Sprite 变量并将鼠标悬停精灵分配给它,然后在 OnMouseOver() 中在您的按钮精灵中使用该精灵图像。 (并在鼠标移出时恢复为原始精灵)
  • 也可以使用 Mecanim 动画,OnMouseOver() 切换到另一个动画(只有 1 帧)

您不需要使用两个精灵并在它们之间切换。只需使用像这样的效果:

void OnMouseOver()
{
    transform.GetComponent<SpriteRenderer>().sprite.color = "your new color for clicking effect";
    transform.GetComponent<SpriteRenderer>().sprite.localScale -= new Vector3(0.1f, 0.1f, 0.1f);
}

并在 OnMouseExit 中恢复所有这些过程。或者,如果你还想改变精灵,你可以这样改变:

Sprite sprite;
Sprite highlightSprite;

void OnMouseOver()
{
    transform.GetComponent<SpriteRenderer>().sprite = highlightSprite;
}

void OnMouseExit()
{
    transform.GetComponent<SpriteRenderer>().sprite = sprite;
}

并在 OnMouseExit 中改回。