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上的主要内容,如果未能解决你的问题,请参考以下文章
[Unity 3d] 判断手指/鼠标按下触发在UI上的正确方法