当鼠标悬停时更改 UI 按钮的源图像? (统一)
Change Source Image of a UI Button when a mouse is over it? (Unity)
你好,我是 Unity 的新手,我正在尝试让 UI 按钮在鼠标悬停在按钮上时更改其源图像,并且当鼠标不再悬停在按钮上时,按钮的源图像恢复正常。我知道需要一个精灵作为按钮的源图像,所以我创建了两个图像精灵文件(一个是普通图像,另一个是鼠标悬停在按钮上时的点亮图像)
下面是带有正常源图像的播放按钮的屏幕截图
按钮将在鼠标经过时点亮以更改其源图像
如何在 C# 中执行此任务?当鼠标悬停在按钮上时,如何在 C# 中更改按钮的源图像?
这是我在查看一些参考资料后得出的结论。我是 Unity 的新手,很抱歉我缺乏知识
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayButton : MonoBehaviour {
private PlayButton pb;
private Sprite newSprite;
// Use this for initialization
void Start () {
pb = GetComponentInChildren<PlayButton> ();
}
// Update is called once per frame
void Update () {
}
public void onClick(){
}
public void onPointerHover(PointerEventData eventData){
//When mouse hovers over the button, the button changes
pb.image.overrideSprite = newSprite;
}
}
没有onPointerHover
这样的东西。要检测鼠标悬停使用 OnPointerEnter
。要从鼠标悬停时检测鼠标何时存在,请使用 OnPointerExit
。您必须实施 IPointerExitHandler
和 IPointerEnterHandler
才能使用这些功能。
您阅读了更多示例。
至于更改按钮的源图像,可以使用Button.image.sprite
或Button.image.overrideSprite
。
只需附加此按钮对象:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class PlayButton : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler
{
private Button pb;
public Sprite newSprite;
void Start()
{
pb = GetComponent<Button>();
}
public void OnPointerEnter(PointerEventData eventData)
{
pb.image.sprite = newSprite; ;
Debug.Log("Mouse Enter");
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("Mouse Exit");
//Change Image back to default?
}
}
编辑:
请注意,您不必自己执行此操作。 Unity 内置了执行此操作的方法。
1。将按钮的过渡选项从 "Color Tint" 更改为 "Sprite Swap".
2。将 "Highlighted Sprite" 插槽更改为您想要的 Sprite。
你好,我是 Unity 的新手,我正在尝试让 UI 按钮在鼠标悬停在按钮上时更改其源图像,并且当鼠标不再悬停在按钮上时,按钮的源图像恢复正常。我知道需要一个精灵作为按钮的源图像,所以我创建了两个图像精灵文件(一个是普通图像,另一个是鼠标悬停在按钮上时的点亮图像)
下面是带有正常源图像的播放按钮的屏幕截图
按钮将在鼠标经过时点亮以更改其源图像
如何在 C# 中执行此任务?当鼠标悬停在按钮上时,如何在 C# 中更改按钮的源图像?
这是我在查看一些参考资料后得出的结论。我是 Unity 的新手,很抱歉我缺乏知识
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayButton : MonoBehaviour {
private PlayButton pb;
private Sprite newSprite;
// Use this for initialization
void Start () {
pb = GetComponentInChildren<PlayButton> ();
}
// Update is called once per frame
void Update () {
}
public void onClick(){
}
public void onPointerHover(PointerEventData eventData){
//When mouse hovers over the button, the button changes
pb.image.overrideSprite = newSprite;
}
}
没有onPointerHover
这样的东西。要检测鼠标悬停使用 OnPointerEnter
。要从鼠标悬停时检测鼠标何时存在,请使用 OnPointerExit
。您必须实施 IPointerExitHandler
和 IPointerEnterHandler
才能使用这些功能。
您阅读了更多示例
至于更改按钮的源图像,可以使用Button.image.sprite
或Button.image.overrideSprite
。
只需附加此按钮对象:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class PlayButton : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler
{
private Button pb;
public Sprite newSprite;
void Start()
{
pb = GetComponent<Button>();
}
public void OnPointerEnter(PointerEventData eventData)
{
pb.image.sprite = newSprite; ;
Debug.Log("Mouse Enter");
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("Mouse Exit");
//Change Image back to default?
}
}
编辑:
请注意,您不必自己执行此操作。 Unity 内置了执行此操作的方法。
1。将按钮的过渡选项从 "Color Tint" 更改为 "Sprite Swap".
2。将 "Highlighted Sprite" 插槽更改为您想要的 Sprite。