小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!

简介: 小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!

🟥 Unity获得当前鼠标悬浮处UI

/// <summary>
        /// 获得当前鼠标悬浮处UI
        /// </summary>
        public static Transform GetOverUI(this Transform trans)
        {
            Transform obj = null;
 
            EventSystem uiEventSystem = EventSystem.current;
            if (uiEventSystem != null)
            {
                PointerEventData uiPointerEventData = new PointerEventData(uiEventSystem);
                uiPointerEventData.position = Input.mousePosition;
 
                List<RaycastResult> uiRaycastResultCache = new List<RaycastResult>();
 
                uiEventSystem.RaycastAll(uiPointerEventData, uiRaycastResultCache);
                if (uiRaycastResultCache.Count > 0)
                {
                    obj = uiRaycastResultCache[0].gameObject.transform;
                }
            }
 
            return obj;
        }

使用方法:

Transform overUI = transform.GetOverUI();


🟧 Unity获得当前鼠标悬浮处物体

/// <summary>
        /// 获得MainCamera下,当前鼠标下的3D物体
        /// </summary>
        public static Transform GetOverObj(this Transform trans, Camera cam = null)
        {
            Transform obj = null;
            
            cam = cam == null ? Camera.main : cam;
 
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, cam.farClipPlane))
            {
                // 如果与物体发生碰撞,在Scene视图中绘制射线 
                Debug.DrawLine(ray.origin, hit.point, Color.green);
 
                obj = hit.transform;
            }
 
            return obj;
        }

使用方法:

Transform overObj = transform.GetOverObj();
  • 若你不是用MainCamera看场景的,那就将你正在使用的摄像机传入就好了。
相关文章
|
29天前
|
机器学习/深度学习 图形学 Windows
小功能⭐️unity3d KeyCode各键值说明
小功能⭐️unity3d KeyCode各键值说明
|
29天前
|
图形学
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
|
14天前
|
定位技术 C# 图形学
从零开始的unity3d入门教程(二)----基本功能讲解
这是一篇Unity3D入门教程,详细介绍了Unity界面操作、游戏物体创建修改、场景搭建、玩家控制、音效添加以及游戏测试和导出的全过程。
从零开始的unity3d入门教程(二)----基本功能讲解
|
4天前
|
搜索推荐 前端开发 C#
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
|
11天前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
32 3
|
28天前
|
前端开发 图形学
Unity精华☀️UI和物体可见性的判断方法
Unity精华☀️UI和物体可见性的判断方法
|
29天前
|
图形学
小功能⭐️Unity UnityEvent实现代码的选择
小功能⭐️Unity UnityEvent实现代码的选择
|
29天前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
29天前
|
图形学
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
|
11天前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
24 0