unity简单示例——去掉所有UI物体的RaycastTarget选项

Unity中 如何使创建出来的UI组件raycastTarget默认为false 利用反射获取UGUI源码底层的方法,自己重写创建ui控件时的内部逻辑 阅读详情

去掉此选项后游戏会减少射线检测,进而提升游戏性能

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
/****************************************************
作者:cg
功能:RaycastTarget管理(此处如果完全用不到交互,可以将GraphicRaycaster脚本去掉)
*****************************************************/
[CanEditMultipleObjects]
[CustomEditor(typeof(RaycastTargetManager))]
public class RaycastTargetManagerEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        if (GUILayout.Button("取消场景中所有物体的Rct"))
        {
            RaycastTargetManager.RaycastTargetAllCallOff();
        }
        if (GUILayout.Button("勾选场景中所有物体的Rct"))
        {
            RaycastTargetManager.RaycastTargetAllCallOn();
        }
    }
}
public class RaycastTargetManager:MonoBehaviour
{

    void OnDrawGizmos()
    {
        Vector3[] s_fourCorners = new Vector3[4];
        foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
        {
            if (g.raycastTarget)
            {
                RectTransform rectTransform = g.transform as RectTransform;
                rectTransform.GetWorldCorners(s_fourCorners);
                Gizmos.color = Color.red;
                for (int i = 0; i < 4; i++)
                    Gizmos.DrawLine(s_fourCorners[i], s_fourCorners[(i + 1) % 4]);

            }
        }
    }

    public static void RaycastTargetAllCallOff()
    {
        foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
        {
            g.raycastTarget = false;
        }
    }

    public static void RaycastTargetAllCallOn()
    {
        foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
        {
            g.raycastTarget = true;
        }
    }
}
#endif

Unity移动端UI交互:IPointerHandler原理、常见问题与性能优化 在Unity游戏开发中,UI事件系统是连接用户输入与游戏逻辑的核心桥梁,其底层基于射线检测与事件接口的委托机制。这套系统通过EventSystem、GraphicRaycaster和IPointerHandler等组件协同工作,将屏幕触摸坐标转换为具体的游戏内交互响应。理解其原理对于实现流畅、稳定的移动端体验至关重要,尤其在处理多指触控、事件冲突和性能开销时。在实际开发中,开发者常会遇到UI点击无响应、区域不准、与ScrollRect冲突等问题,这通常与RaycastTarget设置、Canvas层级或事件 阅读详情

相关推荐

Unity UGUI点击空白区域关闭UI:四种实现方案与事件系统原理详解

在Unity UI开发中,事件系统与射线投射机制是处理用户交互的核心基础。Unity的EventSystem通过GraphicRaycaster组件管理输入事件,当用户点击屏幕时,系统会从顶层到底层检测所有启用了Raycast Target的UI元素,生成按深度排序的命中列表。这一原理支撑了复杂的UI层级交互,其技术价值在于能够精准控制事件传递与拦截,实现如弹窗、面板等组件的智能关闭逻辑。在实际应用场景中,开发者常需处理点击界面外部区域自动关闭UI的需求,这涉及事件穿透与层级管理。本文聚焦Unity UGU

weixin_34050005的博客 906

Unity空物体点击失效?解析UI事件系统与射线检测机制

在Unity开发中,UI事件系统是构建交互功能的核心模块,其底层依赖于射线检测机制来判定用户输入的有效性。该机制要求接收事件的对象必须具备可被检测的载体,通常是通过Graphic组件或Collider组件实现。理解这一原理对于解决常见的交互问题至关重要,例如空GameObject无法响应点击事件。从技术价值看,掌握事件触发链路能帮助开发者避免常见误区,如误以为仅靠脚本接口就能实现交互。在实际应用场景中,无论是Screen Space - Overlay模式的HUD,还是World Space的沉浸式UI,都

weixin_34023982的博客 411

Unity 性能优化之UI和模型优化(九)

UI和模型的一些优化。unity本身支持多种UI:IMGUI、UIElement、UGUI、NGUI、FairyGUI等好记性不如烂笔头!上一章:链接:Unity 性能优化之图片优化(八)

qq_37524903的博客 3022

unity的UGUI的Raycast Target的使用(优化)

我之前写过一篇博客是关于unity的UGUI的内存优化的 里边提到一点点关于Raycast Target 传送门 这篇博客介绍一下Raycast Target的使用和内存优化的方法 首先我们要知道哪里有Raycast Target 这个东西我们可能不太会注意 但是的确有用 在Image和text里默认勾选 虽然很不起眼 但是他会消耗不必要的内存 但是如果一味的全部取消 会出现问题 测试 首先我们创建一个工程 然后创建一个按钮 然后创建出来之后 是一个按钮 下边一个text 我们给他注册事件 当我们把两个的R

weixin_44302602的博客 9927

ORACLE 12C RAC 启动报错,错误代码 ORA-27300,ORA-27301,ORA-27302

非一体机,12.2 无任何补丁,2套X86服务器,1节点集群异常(数据库正常,还有会话),2节点正常工作,负载不高,硬件、空间均未检查到异常,多路径存在掉线的情况,但通过Mulitpath -ll 看又是正常的,2根私有网络,其中一根不同,sysctl中配置的稀疏模式。5、再次加成crs alert ohas等集群日志,以及根据现象和错误再次到后台sr中查找可用信息,发现有一个类似问题,12.2 RAC 无任何补丁,报同样错误,解决方案为重启两套服务器。查询MOS文档以及后台文档,排除上面指出的问题。

weixin_42344665的博客 1465

保姆级教程:用SNAP处理哨兵一号数据,5步搞定城区范围提取(附江西晋城案例)

本文提供了一份详细的保姆级教程,介绍如何使用SNAP软件处理哨兵一号数据,通过5个关键步骤快速提取城区范围。以江西晋城为例,教程涵盖数据准备、预处理、核心处理流程、自动化搭建及成果分析,帮助用户轻松掌握SNAP操作技巧,适用于城市规划、环境监测等领域。

weixin_32535389的博客 454

(027)Unity3d Image创建去掉RayCast

【代码】(025)Unity3d Image创建去掉RayCast。

WGYHAPPY的博客 453

雷达气象学(8)——反射率因子图实战(强对流预警篇)

本文聚焦雷达反射率因子图在强对流预警中的实战应用,深入解析了柱状回波、有界弱回波区(BWER)、三体散射(TBSS)等关键回波结构特征,这些是识别超级单体风暴和大冰雹的核心“身份证”。文章强调从静态识别转向动态追踪与多源数据综合研判的思维转变,并提供了系统的实战分析流程与常见误区避坑指南,旨在提升对强对流天气的短临预警能力。

weixin_29213827的博客 486

Unity 射线检测 解决UI穿透

射线检测、UGUI解决UI穿透问题 转载自:http://blog.youkuaiyun.com/u014230923/article/details/51493382 最近在学习的过程中遇到一个问题,那就是当有 ui 时如果你点击 ui,这时如果鼠标下面还有一些3d物体也有点击效果,这时候也会触发。这是一位点击的时候,鼠标“穿透”了。,但我们是不想要这种效果发生的。那我们该怎么办? 貌似 使用 NGUI 的...

qq_43511290的博客 7598

数字电路逻辑与设计实验三 译码器和数据选择器

1. 译码器功能测试 将 74LS139 按图 3.1 接线,按表 3.2 输入电平分别置位,填输出状态表。 2. 译码器转换 将双 2-4 线译码器转换为 3-8 线译码器。 (1)画出转换电路图。 (2)在实验箱上接线并验证设计是否正确。 (3)设计并填表写该 3-8 线译码器功能表,画出输入、输出波形。 3. 数据选择器的测试及应用 (1) 将双 4 选 1 数据选择器 74LS153 参照图 3.2 接线,测试其功能并填写功能表 3.3。 (2)将实验箱脉冲信号源中固定连续脉冲 4 个不

欢迎交流学习心得 3086

DSShop移动商城网店系统 反序列化RCE漏洞复现

DSShop单店铺移动商城网店系统的getCartList方法的cart参数存在php反序列化漏洞,攻击者可以通过漏洞执行任意代码,获取服务器权限。

0xSec 1472

Unity性能调优手册8UI:Canvas,Layout,RaycastTarget,Mask,TextMeshPro,UI显示

翻译自https://github.com/CyberAgentGameEntertainment/UnityPerformanceTuningBible/uGUI (Unity标准UI系统)和TextMeshPro(将文本绘制到屏幕的机制)的调优实践。

Have a nice day. 1162

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f结构,实现精度与效率的同步提升

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

know_F0727的博客 203

UGUI优化 RaycastTarget

优化依据: UGUI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,然后发射线,并排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。 问题: RaycastTarget如果被勾选的过多的话, 效率必然会低。 根据UGUI常用拼UI方式,提出以下需求 需求: 1.要能看到哪个模块勾选了RaycastTarget 2.创建的Image,text自动取消勾选RaycastTarget 3.已创建的Image,text如果

时光不染 1992

半导体晶圆调平系统:基于最小二乘法的实现方案

基于最小二乘法的晶圆调平技术通过数学建模与工程实现的结合,解决了半导体量测中高精度平面对准的核心问题。实际应用中,需根据设备特性优化采样策略、校准传感器误差,并通过实时性优化满足高产能场景需求。该方案的模块化设计(如分离数据采集、拟合计算、补偿输出)也为后续功能扩展(如引入机器学习优化拟合模型)提供了灵活性。

品质生活,极致编程。 1182

飞牛fnNAS搭建私有云音乐库

本文介绍了在飞牛NAS上部署Navidrome音乐服务器的完整流程。首先创建音乐存储目录并安装Navidrome应用,然后配置管理员账号、语言设置和音乐路径。接着详细说明使用"音乐标签"软件刮削音乐元数据的方法,包括获取软件、导入音乐文件和自动匹配标签。针对远程访问需求,推荐使用ZeroTier实现内网穿透,并给出注册、创建网络及设备加入的具体步骤。最后介绍移动端使用"音流"APP连接Navidrome服务器的配置方法,实现手机端音乐播放。通过这套方案,用户可以搭建专

dgnankai的专栏 1827

Unity UGUI优化小技巧(RaycastTarget)

在拼UI的过程中会添加很多图片文字,但是很容易会忽略其中一点就是把无用的RaycastTarget去掉,因为开启此选项,虽然此组建虽然不需要接受射线,但是它而然工作且消耗性能 在网上找了2个小工具: 其中一个是在Editor模式下用蓝色框出启用RatcastTarget的组件 Code如下。挂在任意GameObject上即可 #if...

su9257的博客 686

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ugui unity 取消选择_UGUI研究院之有效解决RaycastTarget勾选过多的烦恼(二十三)...

看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d以后复制出来的也就带了这个属性,很可...

weixin_39933414的博客 384

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

取消勾选RaycastTarget,优化UGUI效率

无意间发现了一个小技巧。如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题。 一般UI里也就是按钮才需要接收响应事件,那么大部分image和text是是不需要开RaycastTarget的。  但是问题就来了,Unity默认在hierarchy窗口Create->UI->Ima

⎝⏠⏝⏠⎠ 1941

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Unity射线检测全解析:物理与UI交互原理、实战与性能优化

在游戏开发中,交互系统是连接玩家与虚拟世界的桥梁,其核心原理之一便是射线检测技术。射线检测通过模拟从观察点发射虚拟射线,与场景中的物体进行碰撞或区域相交测试,从而确定玩家的操作目标。从技术实现上,主要分为基于物理引擎的物理射线检测和基于UI系统的UI射线检测两大体系。物理射线检测依赖于3D碰撞体的几何形状进行精确的空间计算,适用于角色选中、射击判定、物理查询等场景;而UI射线检测则基于2D矩形区域和层级顺序进行筛选,专为按钮、滑块等界面交互设计。理解两者的底层机制与差异,对于构建流畅、精准的交互体验具有关键

weixin_33709219的博客 521

【Unity学习笔记】TextMeshPro文档(一)

本人英语渣渣翻译,稍微删减了些自认为可以忽视的部分,原文地址 http://digitalnativestudios.com/textmeshpro/docs/textmeshpro-component/ Text Objects TextMesh Pro可分为两种游戏物体,一个用于Unity UI,另一个是用于3D场景。二者功能大体相同,但也有少许本质区别。本文使用UI方面那类来描述功能,也会指出二者的不同。 1Text Objects 你可以通过GameObject>UI>Text-Text

一白梦人的博客 2万+

Unity-UI组件详解

今天我们来学习Unity的UI的详解,这部分的内容相对较少,对于程序员来说主要的工作是负责将各种格式的图片呈现在显示器上并允许操作这些图片。本篇帖子的理论依据依然是官方开源的UGUI代码,网址为:GitHub - Unity-Technologies/uGUI: Source code for the Unity UI system.我们首先来认识一下UGUI,全称​:Unity GUI,开发者习惯称其为UGUI,大体上可以根据功能分为这么几个部分:在工作流程中各个层的作用:我们在Unity或者说UGUI中

lastXuanGod的博客 3390

Unity UI系统--image组件

UI中除了文本,最多的就是图片、按钮,那lmage组件主要负责图片的显示lmage游戏物体必须放在Canvas游戏物体下才可以生效。

qq_73628117的博客 1829

unity 射线检测真机失效_Unity不让射线在UI开启时响应

最近slg项目中有个需求,场景中有地块,给武将上阵,同时支持拖动,点击等基本操作,同时又要打开UI替换武将,需要处理点击穿透的问题需求点:1.点击地块,打开UI,但是不能点穿导致再次打开(其他办法也行不在这讨论);2.打开UI,阻挡射线点击,和第一点需求差不多3.Canvas Group只能解决 让射线响应 UI不被响应的需求,而不是UI开启时射线不响应的需求地块最基本的box collider响...

weixin_39902875的博客 792
上一篇: unity简单示例——序列帧图片自动播放
下一篇: unity简单示例——项目内创建脚本模板
勤学者闯天涯
博客等级 码龄10年 25粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值