unity判断鼠标在不在UI上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity判断鼠标在不在UI上相关的知识,希望对你有一定的参考价值。

参考技术A 用OnMouseStay。
可以定义一个变量:bool in=false;
函数被执行就调到true;
void OnMouseStay()

in=true;

void update

if(!in)

//do somethings

如何在 Unity 5 中检测 UI 图像的鼠标悬停?

【中文标题】如何在 Unity 5 中检测 UI 图像的鼠标悬停?【英文标题】:How to detect mouse over for UI image in Unity 5? 【发布时间】: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;

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,实际上我在 gamedev.stackexchange 上得到了答案,不过很相似。

以上是关于unity判断鼠标在不在UI上的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D_UGUI判断鼠标或者手指是否点击在UI上

unity 怎么识别鼠标点击在ui上

[Unity 3d] 判断手指/鼠标按下触发在UI上的正确方法

Unity3D 判断鼠标是否按在UGUI上

Unity判断鼠标是否在ui的Recttransform内的源码

unity判断鼠标是否点击到ui,获得当前点击到的ui物体