iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Unity怎么获取鼠标停留位置下的物体
  • 895
分享到

Unity怎么获取鼠标停留位置下的物体

2023-06-14 12:06:36 895人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关Unity怎么获取鼠标停留位置下的物体的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。根据UGUI的射线检测机制获取当前鼠标下的UI:/// <summary>&nb

这篇文章给大家分享的是有关Unity怎么获取鼠标停留位置下的物体的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

根据UGUI的射线检测机制获取当前鼠标下的UI:

/// <summary>    /// 获取鼠标停留处UI    /// </summary>    /// <param name="canvas"></param>    /// <returns></returns>    public GameObject GetOverUI(GameObject canvas)    {        PointerEventData pointerEventData = new PointerEventData(EventSystem.current);        pointerEventData.position = Input.mousePosition;        GraphicRaycaster gr = canvas.GetComponent<GraphicRaycaster>();        List<RaycastResult> results = new List<RaycastResult>();        gr.Raycast(pointerEventData, results);        if (results.Count != 0)        {            return results[0].gameObject;        }         return null;    }

其中,results为鼠标下UI的列表。

不仅适用于UGUI,可以在摄像机上添加PhysicsRaycaster组件,传参为摄像机,这样就可以获取3D物体。

/// <summary>    /// 获取鼠标停留处物体    /// </summary>    /// <param name="raycaster"></param>    /// <returns></returns>    public GameObject GetOverGameObject(GameObject raycaster)    {        PointerEventData pointerEventData = new PointerEventData(EventSystem.current);        pointerEventData.position = Input.mousePosition;        PhysicsRaycaster pr = raycaster.GetComponent<PhysicsRaycaster>();        List<RaycastResult> results = new List<RaycastResult>();        pr.Raycast(pointerEventData, results);        if (results.Count != 0)        {            return results[0].gameObject;        }         return null;    }

刚遇到一个问题,我的UI点击包括3D物体点击都是用的EventSystem,也就是上面的方法,这时用

UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()这个方法去判断鼠标是否在UI上,就会出现鼠标在3D物体上也会拿到返回值,(没有去研究传参index的用法),直接选择了上面获取UI的获取方法。

脚本:

 using System.Collections.Generic; using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI; namespace LastZero.Utility{    public class MouseOverController    {        /// <summary>        /// 获取鼠标停留处UI        /// </summary>        /// <param name="canvas"></param>        /// <returns></returns>        public static GameObject GetOverUI(GameObject canvas)        {            PointerEventData pointerEventData = new PointerEventData(EventSystem.current);            pointerEventData.position = Input.mousePosition;            GraphicRaycaster gr = canvas.GetComponent<GraphicRaycaster>();            List<RaycastResult> results = new List<RaycastResult>();            gr.Raycast(pointerEventData, results);            if (results.Count != 0)            {                return results[0].gameObject;            }             return null;        }         /// <summary>        /// 获取鼠标停留处UI        /// </summary>        /// <param name="canvas"></param>        /// <returns></returns>        public static GameObject GetOverGameObject(GameObject camera)        {            if (camera.GetComponent<PhysicsRaycaster>() == null)                camera.AddComponent<PhysicsRaycaster>();             PointerEventData pointerEventData = new PointerEventData(EventSystem.current);            pointerEventData.position = Input.mousePosition;            PhysicsRaycaster gr = camera.GetComponent<PhysicsRaycaster>();            List<RaycastResult> results = new List<RaycastResult>();            gr.Raycast(pointerEventData, results);            if (results.Count != 0)            {                return results[0].gameObject;            }             return null;        }    }}

补充:unity中鼠标经过一个物体时出现提示

首先被检测的物体要有collider

using UnityEngine;using System.Collections;public class Cube : MonoBehaviour {//    public TransfORM cube;    bool isshowTip;//    // Use this for initialization    void Start () {        isShowTip=false;    }        void OnMouseEnter () {        isShowTip=true;        //Debug.Log (cube.name);//可以得到物体的名字    }    void OnMouseExit () {        isShowTip=false;    }    void OnGUI () {        if (isShowTip){            GUI.Label(new Rect(Input.mousePosition.x,Screen.height-Input.mousePosition.y,100,40),"afdasdfasdf");          }      }}

补充:Unity中UGUI中获取鼠标点击位置以及UI物体的屏幕坐标

鼠标点击位置:

直接访问Input.mousePosition属性,返回一个三维屏幕坐标,即鼠标的坐标。

UI物体的屏幕坐标:

RectTransformUtility.WordToScreenPoint(Camera.main, rectTransform.position),返回的是二维屏幕坐标。

感谢各位的阅读!关于“Unity怎么获取鼠标停留位置下的物体”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Unity怎么获取鼠标停留位置下的物体

本文链接: https://www.lsjlt.com/news/270749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Unity怎么获取鼠标停留位置下的物体
    这篇文章给大家分享的是有关Unity怎么获取鼠标停留位置下的物体的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。根据UGUI的射线检测机制获取当前鼠标下的UI:/// <summary>&nb...
    99+
    2023-06-14
  • Unity 如何获取鼠标停留位置下的物体
    根据UGUI的射线检测机制获取当前鼠标下的UI: /// <summary> /// 获取鼠标停留处UI /// </summary> ...
    99+
    2024-04-02
  • C#中怎么获取鼠标位置
    本篇文章给大家分享的是有关C#中怎么获取鼠标位置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。这里将介绍C#鼠标位置相关获取程序代码,包括从图片的划分,左右边框的确定,鼠标移动...
    99+
    2023-06-17
  • c语言怎么获取鼠标当前位置
    在C语言中,要获取鼠标的当前位置,需要使用操作系统提供的相关函数。在Windows操作系统中,可以使用`GetCursorPos`函数获取鼠标的当前坐标。该函数的原型为:```cBOOL GetCursorPos(LPPOINT lpP...
    99+
    2023-08-11
    c语言
  • python怎么根据值获取下标位置
    Python提供了几种方法来根据值获取元素的下标位置。下面是一些常用的方法:1. 使用index()方法:该方法用于查找列表中第一个...
    99+
    2023-08-29
    python
  • 如何利用Python获取鼠标的实时位置
    目录安装pyautogui鼠标操作样例Python获取鼠标实时位置具体实现结果展示总结使用Python的第三方库pyautogui,PyAutoGUI是一个纯Python的GUI自动...
    99+
    2024-04-02
  • Javascript中怎么利用textarea获取光标位置
    本篇文章为大家展示了Javascript中怎么利用textarea获取光标位置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。用Javascript获取textare...
    99+
    2024-04-02
  • css怎么设置超链接字体鼠标悬停颜色改变效果
    本文小编为大家详细介绍“css怎么设置超链接字体鼠标悬停颜色改变效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“css怎么设置超链接字体鼠标悬停颜色改变效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢...
    99+
    2024-04-02
  • 怎么实现vue+openlayer5获取当前鼠标滑过的坐标
    本篇内容主要讲解“怎么实现vue+openlayer5获取当前鼠标滑过的坐标”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现vue+openlayer5获取当前鼠标滑过的坐标”吧!前言:&...
    99+
    2023-06-25
  • javascript怎么获取滚动条的位置
    本篇内容介绍了“javascript怎么获取滚动条的位置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • mfc中怎么获取控件的位置
    可以使用CWnd类的GetWindowRect方法获取控件的位置,该方法返回控件在屏幕上的坐标。示例代码如下:```cppCRect...
    99+
    2023-10-10
    mfc
  • python怎么获取列表元素的下标
    使用python获取列表元素下标的方法:1.新建python项目;2.定义list列表,并初始化;3.使用enumerate函数获取元素下标;具体步骤如下:首先,打开python,并新建一个python项目;python项目创建好后,在项目...
    99+
    2024-04-02
  • C#怎么实现获取Excel中图片所在坐标位置
    本文小编为大家详细介绍“C#怎么实现获取Excel中图片所在坐标位置”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么实现获取Excel中图片所在坐标位置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。【程序...
    99+
    2023-06-30
  • oracle怎么获取指定字符串的位置
    在Oracle中,您可以使用INSTR函数来获取指定字符串在另一个字符串中的位置。语法如下: INSTR(string1, stri...
    99+
    2024-04-17
    oracle
  • HTML5怎么获取网站访问者的位置
    这篇文章主要介绍“HTML5怎么获取网站访问者的位置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML5怎么获取网站访问者的位置”文章能帮助大家解决问题。 寻...
    99+
    2024-04-02
  • java怎么获取某个字符串的位置
    在Java中,可以使用String类的`indexOf()`方法来获取某个字符串的位置。该方法的语法如下:```javapublic...
    99+
    2023-08-25
    java
  • jQuery中怎么获取元素位置的接口
    本篇文章为大家展示了jQuery中怎么获取元素位置的接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jQuery中提供了获取设置HTML元素位置的接口方法。如下....
    99+
    2024-04-02
  • Javascript中怎么获取页面元素的位置
    这篇文章给大家介绍Javascript中怎么获取页面元素的位置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、网页的大小和浏览器窗口的大小首先,要明确两个基本概念。一张网页的全部面积...
    99+
    2024-04-02
  • JavaScript中怎么获取当前页面的滚动位置
    这期内容当中小编将会给大家带来有关JavaScript中怎么获取当前页面的滚动位置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。要获取当前页面的滚动条纵坐标位置,用:do...
    99+
    2024-04-02
  • js怎么获取图像缩放后的实际位置
    这篇文章主要介绍了js怎么获取图像缩放后的实际位置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。项目中遇到图片实际显示尺寸的判定问题,图片可...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作