【问题标题】:How to detect mouse over for UI image in Unity 5?如何在 Unity 5 中检测 UI 图像的鼠标悬停?
【发布时间】:2015-09-20 19:53:12
【问题描述】:

我有一张图片,我已经设置好可以四处移动和放大和缩小。问题是可以从场景中的任何地方进行缩放,但我只希望它在鼠标悬停在图像上时进行缩放。我尝试过使用 OnMouseEnter、OnMouseOver、事件触发器,所有这三个都没有碰撞器、碰撞器、触发器碰撞器,以及图像本身和空游戏对象上的所有这些。然而,这些都没有奏效......所以我完全被难住了......有人可以在这里帮助我吗!

这是我的脚本:

private float zoom;
public float zoomSpeed;
public Image map;

public float zoomMin;
public float zoomMax;

void Update () {
    zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed);
    map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0);
    Vector3 scale = map.transform.localScale;
    scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, zoomMin, zoomMax), 0);
    map.transform.localScale = scale;
}

【问题讨论】:

    标签: c# image user-interface unity3d mouse


    【解决方案1】:

    这可以很容易和干净地解决。您可以在图像对象上添加事件触发器。在事件触发组件内部添加两种事件类型:Pointer Enter 和 Pointer Exit。从那时起,我将进入滚动脚本并添加一个名为 canScroll 的 bool,以及两个称为 OnHover 和 OnHoverExit 之类的公共方法。当 OnHover 为真时,canScroll 为真,反之亦然。然后就可以在事件触发器中挂接函数了。

    【讨论】:

    • 谢谢,实际上我在 gamedev.stackexchange 上得到了答案,不过很相似。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2015-03-12
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多