优化(2)——射线检测基础,合批原理

2023-11-16

射线检测

射线响应的方法,首先获取到canvas下所有graphic组件,

当前的ui元素是否接收射线

第一个if判断是否绘制到屏幕上,是否勾选RaycastTarget接受射线,是否进行了剔除

第二个if判断点击是否在当前对象上

第三个判断,当前的z是否超出相机的最远面

经过筛选进入Raycast方法,Graphic添加到数组中,对数组中的深度进行排序

相机射线只会对继承自Graphic的类的对象响应

合批原理

Ugui从后向前渲染,合批规则:判断UI深度,MaterialsId材质Id,textureID纹理id,渲染顺序,对所有的UI进行排序,如果材质相同,纹理相同就可以进行合批,合批必须是紧挨着的元素,

深度的计算方法,深度值为-1不渲染,判断有没有覆盖在别的物体上面,深度越小越先渲染,

Text的框,比Text的mesh大,,然后看能不能合批,如果材质Id和纹理Id相当则可以合批,如果不相等,UI元素深度+1,

先根据是否可以合批计算出深度值,按照排序规则整理,

0,1,2(红,黄,蓝可以合批)得到缓存的深度合批数组,交给合批的部分处理

第一步:遍历所有的UI

第二步:  根据当前的深度值,材质id,贴图id,redenderOrder,依次进行深度处理,得到一个排序list,

第三步: 把排序深度值等于-1的剔除掉

第四步:相邻的元素是否可以合批,生成批次号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优化(2)——射线检测基础,合批原理 的相关文章

  • Unity—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • unity game界面按下play会不断闪烁,按下暂停键(pause)或者中止/下一步(step),game界面的画面会接连变化

    没找到答案 改了两个下午的程序 改完还是这样 后来发现是FixedUpdate Update与OnDrawGizmos的问题 OnDrawGizmos是每帧都会绘制 用FixedUpdate理所当然就那啥了 分析的时候 就突然想到是不是这俩
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • Unity单元测试流程

    文章目录 环境 流程 1 创建一个存放 单元测试程序集 的目录 2 打开 Test Runner 窗口 3 选择单元测试模式 4 创建单元测试程序集 5 创建测试脚本 6 运行测试 环境 Unity 2020 3 3f1 流程 1 创建一个
  • 【Unity&C#&随机数】随机数

    一个简单的随机数获得 0或1 使用了这样的代码 想要获得0或者1 if Input anyKeyDown float i 1 if i 1 i Random Range 0 Rang i i lt 0 5 0 1 Debug Log Cou
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文
  • 游戏开发常见操作系列之敌人系统的开发一(U3D)

    在开发游戏的过程中 我们常常会出现一些敌人攻击我们玩家 并且实现掉血以及死亡的现象 敌人还会源源不断地生成 这是怎么制作的呢 接下来为大家提供方法 其中使用了NGUI 后续会更新其它方法 敬请期待 使用HUDText实现扣血时显示文本 直接

随机推荐

  • 【linux】——动静态库

    目录 动静态的比较 扩展名 编译操作 执行的状态 生成静态库 生成动态库 总结 在linux操作系统中 函数库是一个非常重要的的东西 因为很多软件之间都会互相使用彼此提供的函数来使用其特殊的功能 例如 我们在写c语言的时候 但我们要使用pr
  • 【人工智能】5.不确定性推理

    一 不确定推理预备知识 1 不确定性推理的含义 不确定性推理实际上是一种从不确定的初始证据出发 通过运用不确定性知识 最终推出具有一定程度的不确定性但却又是合理或基本合理的结论的思维过程 2 不确定推理基本问题 1 不确定性的表示 知识的不
  • 带环单链表及链表相交问题的分析及代码实现

    什么样的是带环单链表 什么样的是不带环单链表 带环单链表就是单链表的尾结点有连接到单链表自身的某一个结点构成了环 首先 我们怎样检测一个单链表是否带环 1 检测单链表是否带环 如果链表不带环 可以通过遍历链表找到尾节点 那如果单链表带环 就
  • iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

    应用场景 集成支付宝SDK 会看见 p12文件也有 非对称加密算法 一 运行终端 生成私钥 1 cd Users mac Desktop iOS 加密 2 openssl genrsa out private pem 512 生成私钥 注意
  • [MATLAB]线性方程组求解(雅可比迭代和高斯迭代源码实现)

    本试验取材于中南大学 科学计算与MATLAB语言 直接解法 高斯消去法 列主元消去法 矩阵的三角分解法 1 利用左除运算符的直接解法 Ax b gt x a b 注意 如果矩阵A是奇异的或接近奇异的 则MATLAB会给出警告信息 gt gt
  • 队列的基本操作

    一 定义一个queue的接口 其中包含队列用到的方法 package p1 接口 public interface Queue
  • 路由器02---PandoraBox配置

    1 安装libc 什么是libc 这里贴一个gnu官方的解释 Any Unix like operating system needs a C library the library which defines the system cal
  • BootstrapTable 中使用checkbox

    BootstrapTable中使用CheckBox 添加checkbox列即可 columns checkbox true checkbox 默认为false 不显示 为true时显示 获取所以选中的列 var ids var rows t
  • 微信小程序wx.getUserProfile授权及页面展示

    微信wx getUserProfile授权及页面展示 微信小程序wx getUserProfile授权及页面展示 小程序授权页面样式和wx getUserProfile方法使用 话不多说 直接看图看代码 app js 代码片 app js
  • Android 使用Camera2 API 和 GLSurfaceView实现相机预览

    GLSurfaceView 和 SurfaceView 是 Android 中用于显示图像的两个视图类 它们在实现方式和使用场景上有一些区别 实现方式 GLSurfaceView 基于 OpenGL ES 技术实现 可以通过 OpenGL
  • canvas转各种格式

    canvas转化为base64 param canvas canvas 对象 param type 图片类型 值为 image png image jpeg export const canvasToBase64 canvas type g
  • hadoop:no namenode to stop及其他

    在重隔几个月后重新启动hadoop时 发现namenode启动不了 在bin stop all sh时提示no namenode to stop 上网搜寻no namenode to stop 发现各种各样的解决问题的方法 例如format
  • 《GPU高性能编程CUDA实战》中代码整理

    CUDA架构专门为GPU计算设计了一种全新的模块 目的是减轻早期GPU计算中存在的一些限制 而正是这些限制使得之前的GPU在通用计算中没有得到广泛的应用 使用CUDA C来编写代码的前提条件包括 1 支持CUDA的图形处理器 即由NVIDI
  • java111-日期时间格式化

    package com zx import java text DateFormat import java util Date 员工信息类 date类 public class test50 private String name pri
  • ctfshow_web149

    打开容器
  • WPF InkCanvas 基础使用教程

    大家好 由于很多原因 我有很长一段时间没有在 CSDN 上分享我的学习成果了 如今终于可以回归分享之路了 之前在做一个项目的时候 想在一个区域里绘制自己的图形 于是上网搜索资料 无意中找到了 InkCanvas 但我们最终并没有在项目里使用
  • mvp基类抽取

  • Linux 获取内存和CPU使用率

    ifndef SYS FUNC H define SYS FUNC H int GetMemInfo int pTotal int pUsed int GetCpuUsedRate int pValue endif include sys
  • 220920python学习:变量、运算符和分支结构

    220920python学习 变量 运算符和分支结构 一 变量 变量的作用 保存数据 程序中使用数据的方式 在需要数据时直接提供数据 先将数据保存到变量中 然后在需要使用数据的时候通过变量来提供数据 需要多次打印或使用同一个数据 用变量最便
  • 优化(2)——射线检测基础,合批原理

    射线检测 射线响应的方法 首先获取到canvas下所有graphic组件 当前的ui元素是否接收射线 第一个if判断是否绘制到屏幕上 是否勾选RaycastTarget接受射线 是否进行了剔除 第二个if判断点击是否在当前对象上 第三个判断