在鼠标悬停时更改精灵

时间:2015-10-23 17:27:54

标签: unity3d sprite gameobject

我有一个精灵,在我游戏的主菜单中充当按钮。它有一个盒子对撞机,我使用OnMouseDown()来记录按钮的点击次数。

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

3 个答案:

答案 0 :(得分:2)

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

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 newSprite;

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

并在OnMouseExit中更改。

答案 1 :(得分:1)

将鼠标功能放到一个空的父GameObject上,并将其父级给所需的所有精灵,然后通过父级启用/禁用它们

答案 2 :(得分:1)

其他选择:

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