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

     2023-03-30     126

关键词:

【中文标题】如何在 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图像,锚点与轴心点

...个UI图像被点击时鼠标射出的射线就会对其进行碰撞射线检测,如果不勾选的话鼠标生成的射线就会直接传过它图像类型点开后,有如图四种选项切片,平铺,填充则是对我们传给图像的源图像进行一些操作,... 查看详情

如何在 Magnolia 5.7 中检测设备并渲染适当的图像变化

】如何在Magnolia5.7中检测设备并渲染适当的图像变化【英文标题】:HowtodetectdeviceandrenderappropriateimagevariationinMagnolia5.7【发布时间】:2019-11-2719:36:43【问题描述】:到目前为止,我成功地在主题中配置了图像变体,并在ftl模板中渲... 查看详情

如何在 Java 中检测 Image 对象上的鼠标单击事件?

】如何在Java中检测Image对象上的鼠标单击事件?【英文标题】:Howcanyoudetectamouse-clickeventonanImageobjectinJava?【发布时间】:2011-09-2811:11:06【问题描述】:在Java中实现“Kings\'Corners”(美化多人纸牌)。我试图让玩家将一张牌(图像... 查看详情

Unity UI - 如何制作“复合”布局组以在同一位置组合多个图像?

】UnityUI-如何制作“复合”布局组以在同一位置组合多个图像?【英文标题】:UnityUI-Howtomakea"Composite"LayoutGrouptocombinemultipleimagesinthesamelocation?【发布时间】:2021-06-1922:02:53【问题描述】:我正在制作一个简单的自动布局UI... 查看详情

Unity:在 UI 画布图像的着色器中访问精灵二级纹理

】Unity:在UI画布图像的着色器中访问精灵二级纹理【英文标题】:Unity:accessspritesecondarytextureinshaderforUIcanvasimage【发布时间】:2021-02-0110:50:30【问题描述】:在Unity中,我有一个带有通常的_MainTex的sprite和一个附加的_inner纹理,在... 查看详情

在 Unity UI Builder 中动态更改视觉元素的背景图像

】在UnityUIBuilder中动态更改视觉元素的背景图像【英文标题】:DynamicallyChangeVisualElement\'sBackgroundImageinUnityUIBuilder【发布时间】:2022-01-1007:23:02【问题描述】:我想使用脚本在UnityUIBuilder中添加和删除VisualElement背景图像。我知道这... 查看详情

[unity3d]判断手指/鼠标按下触发在ui上的正确方法

...求便提上日程:按下时发现是UI就不旋转视野呗!那么,如何判断鼠标按下时光标下面是UI呢,为什么说网络上流传的EventSystem.current.IsPointerOverGameObject()它就不香呢,笔者又有什么好的方式方法呢?为什么说网络上流传的EventSystem... 查看详情

Unity c#图像未出现在UI画布面板中

】Unityc#图像未出现在UI画布面板中【英文标题】:Unityc#ImagenotappearinginUIcanvaspanel【发布时间】:2018-10-1517:02:33【问题描述】:我编写了一个方法MakeCard(),它实例化了一个卡片预制件(有一个按钮),并通过脚本添加了一个图像... 查看详情

Unity 中的鼠标向上与修饰

...触摸/释放他们的触摸以单击UI按钮(换句话说,我尝试仅检测鼠标释放,或者仅检测触摸释 查看详情

unity滑入button/按键/ui范围检测(代码片段)

...,对应的游戏背景会发生改变将下面的脚本挂在需要检测的UI上即可,记得引用必要的操作:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;usingUnity 查看详情

unity滑入button/按键/ui范围检测(代码片段)

...,对应的游戏背景会发生改变将下面的脚本挂在需要检测的UI上即可,记得引用必要的操作:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;usingUnity 查看详情

在 OpenGL C++ 中检测鼠标点击

】在OpenGLC++中检测鼠标点击【英文标题】:detectmouseclicksinOpenGLC++【发布时间】:2013-04-1910:26:15【问题描述】:我是OpenGL的初学者,我正在尝试创建一个游戏,其中我有一个原始图像作为背景。游戏开始时,我会显示该图像,然... 查看详情

如何检测相机上的运动以移动鼠标

】如何检测相机上的运动以移动鼠标【英文标题】:Howtodetectmotiononcameratomovemouse【发布时间】:2011-01-2319:43:34【问题描述】:我们正在对我们的网络摄像头进行实验。我们想通过在相机前面移动一个容易识别的物体来移动鼠标指... 查看详情

如何检测 UI 图像上的触摸?

】如何检测UI图像上的触摸?【英文标题】:HowdoidetectatouchonaUIimage?【发布时间】:2015-11-1801:03:12【问题描述】:我正在制作一个单视图应用程序,我希望UI图像从屏幕的一侧移动到另一侧。我想检测此图像上的触摸。我无法使用... 查看详情

如何使用新的输入系统在 Unity 中查找鼠标位置

】如何使用新的输入系统在Unity中查找鼠标位置【英文标题】:HowtofindthemousepositioninUnityusingtheNewInputSystem【发布时间】:2021-04-0310:23:38【问题描述】:如何在Unity中找到鼠标位置?我正在使用新的输入系统,我已经尝试过InputDevice... 查看详情

如何在javascript中检测鼠标加速?

】如何在javascript中检测鼠标加速?【英文标题】:Howtodetectmouseaccelerationinjavascript?【发布时间】:2010-09-0114:51:20【问题描述】:我正在Web应用程序中记录鼠标移动。我想检测平台(例如Windows)上的鼠标加速。是否可以从javascript... 查看详情

unity笔记经典的鼠标点击射线检测碰撞

voidUpdate(){if(Input.GetMouseButton(0)){//从摄像机发出到点击坐标的射线Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHithitInfo;if(Physics.Raycast(ray,outhitInfo)){//划出射线,只有在scene视图中才能看到Debug.Draw 查看详情

Unity 2D - 用鼠标检测瓷砖

】Unity2D-用鼠标检测瓷砖【英文标题】:Unity2D-DetectTileswithMouse【发布时间】:2021-03-3004:20:04【问题描述】:概述:我正在制作一个2D塔防游戏,使用Tilemaps作为环境,精灵作为塔和敌人。鼠标需要问题:我想根据鼠标悬停或点击... 查看详情