当前位置: 首页 > news >正文

Unity性能优化工具介绍

文章目录

  • 一.Stats组件
        • 1.Audio音频的数据组件:
        • 2.图形数据
  • 二.Profiler 性能分析器


一.Stats组件

Unity自带Statistics(统计数据),Game视窗中点击Stats打开
在这里插入图片描述

1.Audio音频的数据组件:

在这里插入图片描述

1):Level 声音强度
单位是分贝(dB) 表示音频听声音的大小,是闪烁波动的.

2):SDPload 数据信息负载
数字信号处理的负载 播放的音频越多,越复杂,声音的采样就或高.避免负载或高.

3):Clipping 音频裁剪
音频裁剪情况.当音频信息超过设备支持的最大范围后,该音频信息会被裁剪.坐而会有有一定程度的失真.

4):Staram load 流式负载
表示音频采用流式加载的负载情况,即边听边下载情况下的音频的负载情况.

2.图形数据

在这里插入图片描述

1):FPS 帧率
表示1秒内播放的的画面的数量,用于判断画面的流畅度.一般60以上为流畅.45以上为比较流畅,30以下则会开始会有卡顿感.
这个数值不是越高越好,太高容易导致显卡发热.

2):CPU 单帧处理时长
表示CPU处理一帧所用的时间.
例如: CPU main0.7ms render thread 0.7ms 主线程花费0.7毫秒(主线程主要负责游戏逻辑的更新,用户输入,对像更新,碰撞检测等.)
渲染线程花费0.7毫秒 渲染线程负责显示游戏画面.

3):Batches调用绘制批次数
即CPU调用绘制(Draw Call)的批次数,应该尽量避免过大.

4):Saved by batching 被合并次数
有多少个Draw Call合并到了指次 , 此数据越大表示优化的越好.

5):Tris 面数
Triangle(三角形)当前帧射线机内三角型数量

6):Verts
Vertex(顶点)当前帧射线机内顶点数量

7):Screen 屏幕
当前屏幕的分辨率及内存,应当避免此数据太大.

8):SetPass calls 切换着色器通道次数
渲染中一个Shader可以包含多个角色器通关(Shader pass) , 角色器通道切换会有一定性能消耗.应该避免此数据过大.

9):Shadow casters 产生阴影数量
画面中有多少个对像产生了阴影.同一对像也可能多次产生阴影.应尽量避免此数据过大.

10):Visible skinned meshes 可见蒙皮网格
可以见范围内,蒙皮网格的数量

11):Animation components playing
当前播放的Animation数量

12):Animatior components playing
当前播放的Animator数量
在这里插入图片描述

使用代码UnityStats.可以动态查看以上数据


二.Profiler 性能分析器

1.通过菜单栏Window > Analysis > Profiler 打开
在这里插入图片描述

2.这里我们可以看到窗口分为,CPU Rendering Memory 等信息…
我们可以通过Profiler Modules 选择需要收集信息的模块
在这里插入图片描述

3.这里可以看查总收集帧数 和 当前查看帧数.用帧数控制可以操控上一帧,下一帧,及最后一帧.
在这里插入图片描述

4.当点击某个模块某帧时,左边对应颜色数值会显示对应消耗的量
在这里插入图片描述

5.下面的窗口也可以查看当前帧的详细信息
在这里插入图片描述

6.当重新开始收集时,需要点击Clear新空之前收集的帧数.否则将会从之前收集的帧数后面开始继续收集资料.
在这里插入图片描述

7.收集模式,通常选择playmode,再游戏开始运行后点击小圆圈开始录制.
在这里插入图片描述

8.点击Clear On Play按钮可以每次开始运行时自动清空上次运行的数据
9.点击窗口右上解的保存按钮可以导出文件记录本次收集到的信息
10.点击窗口右上解的导入按钮可以导入,文件记录的收集到的信息
11.点击Deep Profile性能以收集自身编辑方法所消耗的性能
在这里插入图片描述

选择Hierarchy窗口,在右边栏搜索框中也可以搜索对应的方法查看.
Totle : 当前方法占用当前模块总消耗量的百分比
Self : 当前模块占自身代码占用的性能
Calls : 被掉用的次数
GC Alloc : GC allocation 垃圾回收机制,分陪了多少内存
Time ms : 用了多少时间执行这个方法
Self ms : 执行自身代码用的时间

在性能分析中,以下是调用了自身和别人的代码的边别.
在这里插入图片描述

12.使用Profiler.BeginSample及EndSample查看局部代码性能
在这里插入图片描述

在Profiler中搜索这个名字就能查看此段代码所消耗的性能.
在这里插入图片描述

13.Unity官方文档中可以查看更详细的内容
https://docs.unity3d.com/cn/current/Manual/ProfilerWindow.html

14.调用栈CallStatcks
调用栈是计算机在执行过程中记录调用的一种数据结构.
以先进后出的的顺序记录每个函数被调用情况.
在这里插入图片描述
勾选后可以在下面搜索内容.
GC.Alloc表示GC的内存分配情况
UnsafeUtility.Malloc用于在内存中分配未初始模块.只有在处理非托管内存的特定才场景下才会用到
JobHandle.Complete.这里是完成Job System的特定任务.

相关文章:

Unity性能优化工具介绍

文章目录 一.Stats组件1.Audio音频的数据组件:2.图形数据 二.Profiler 性能分析器 一.Stats组件 Unity自带Statistics(统计数据),Game视窗中点击Stats打开 1.Audio音频的数据组件: 1):Level 声音强度 单位是分贝(dB) 表示音频听声音的大小,是闪烁波动的. 2):SDPload 数据信…...

Math之向上向下取整

有时我们会遇到向上和向下取整的操作,这时我们可以使用Math类来进行操作。 1、向上取整 Math.ceil() 方法返回大于或等于指定表达式的最小整数(即向上取整)。如果参数是一个整数,那么结果就是这个整数本身。 示例: …...

MPP架构

MPP架构,即Massively Parallel Processing(大规模并行处理)架构,是一种用于处理大规模数据的并行计算架构。它通过将数据和计算能力分布在多个处理节点上,利用并行处理技术来加速数据处理和分析的速度。 在MPP架构中&…...

These relative modules were not found:* ../../../constant in

这个错误信息表明,你的项目在尝试加载一个相对路径模块 ../../../constant 时遇到了问题。具体来说,它在 ./node_modules/cache-loader/dist/cj 这个路径下找不到这个模块。 这里有几个可能的原因和相应的解决方案: 路径错误:首…...

2024最新彩虹聚合DNS管理系统源码v1.3 全开源

2024最新彩虹聚合DNS管理系统源码v1.3 全开源 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、DNSLA、CloudFlare。 本系统支持多用户,每个用户可分配不同的域名解…...

在Go语言中如何实现变参函数和函数选项模式

在Go语言编程中,我们经常会遇到需要给函数传递可选参数的情况。传统的做法是定义一个结构体,将所有可选参数作为结构体字段,然后在调用函数时创建该结构体的实例并传递。这种方式虽然可行,但是当可选参数较多时,创建结构体实例的代码就会变得冗长และ不太直观。 Go语言的一个…...

Spring Boot中的 6 种API请求参数读取方式

使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。 接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种&a…...

Linux基础命令[27]-gpasswd

文章目录 1. gpasswd 命令说明2. gpasswd 命令语法3. gpasswd 命令示例3.1 不加参数3.2 -a(将用户加入组)3.3 -d(从组中删除用户)3.4 -r(删除组密码)3.5 -M(多个用户一起加入组)3.6 …...

机会约束转化为确定性约束-- 样本均值法

当涉及到新能源消纳的机会约束规划时,我们需要深入理解其背后的原理和采用的方法。以下是对上文内容的更详细且更贴切的展开解释: 机会约束转化为确定性约束-- 样本均值法代码获取戳此处代码获取戳此处代码获取戳此处 新能源消纳的机会约束 新能源&…...

uniapp中,当页面显示时触发子组件的重新渲染

使用watch监听数据变化&#xff1a; 在子组件中使用watch来监听父组件传递的数据&#xff0c;一旦数据发生变化&#xff0c;子组件就会重新渲染。 子组件代码示例&#xff1a; <template><div>{{ message }}</div> </template><script> export d…...

先进制造aps专题五 aps软件的排程算法和优化算法介绍

aps软件的核心&#xff0c;主要是数据管理&#xff0c;排程/优化算法&#xff0c;各类甘特图 所有aps软件排程算法都是Heuristics启发式算法&#xff08;如Greedy算法&#xff09;&#xff0c;只是有的aps软件还支持ga遗传算法优化&#xff08;比如sap apo,oracle aps,isuperap…...

【跳坑日记】暴力解决Ubuntu SSH报错: Failed to start OpenBSD Secure Shell server

报错环境说明&#xff1a; 服务器环境&#xff1a;Ubuntu 20.04 错误内容 最近服务器突然报错&#xff0c;提示如下图信息&#xff1a; 搜素了各种问答&#xff0c;国内的回答大多数是用 ssh-keygen -A命令来解决&#xff0c;但最终也无法登录服务器。 最终搜索到ask ubun…...

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

你是否被K8S的强大而吸引&#xff0c;我相信一部分人是被那复杂的配置和各种专业知识而劝退&#xff0c;应该还有一部分人是因为K8S太吃资源而放手&#xff01; 这里介绍一款平替工具PasteSpider&#xff0c;PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和…...

线性三角化

点的线性三角化 输入一堆的点 [ R w c , t w c , p u c ] [R_{wc},t_{wc},p_{uc}] [Rwc​,twc​,puc​]转化成空间的一系列射线 [ P w i , t w i ] , P w i t w c , t w i R w c p u c [P_{wi},t_{wi}],P_{wi}t_{wc},t_{wi}R_{wc}\times p_{uc} [Pwi​,twi​],Pwi​twc​…...

Golang os.Rename invalid cross-device link的原因

文章目录 背景运行环境 文件系统对比linux下的文件系统mac下的文件系统linux下的mv指令 golang的os.Rename源码os.Renamesyscall.Renamesyscall.RenameatSYS_RENAMEAT是什么 查看系统调用函数文档什么是man pageman page的用法user commandssystem calls renameat不支持跨挂载点…...

Flutter 中的 Badge 小部件:全面指南

Flutter 中的 Badge 小部件&#xff1a;全面指南 在移动应用设计中&#xff0c;徽章&#xff08;Badge&#xff09;是一种常见的UI元素&#xff0c;用于吸引用户注意并展示重要信息&#xff0c;如未读消息数量、新通知等。Flutter 通过各种第三方包提供了徽章小部件&#xff0…...

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包&#xff0c;被分成了8个&#xff0c;群里有10个人一起来抢红包&#xff0c;有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额&#xff0c;不能多也不能少。 2、每个人至少抢到1元…...

【PB案例学习笔记】-08 控件拖动实现

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…...

读书笔记整理

1.对天才而言&#xff0c;任何努力都如做游戏般容易和有趣&#xff0c;兴趣是发展的原动力。从这个角度来看&#xff0c;通过普通人的劳动是无法创造天才的。 2.让孩子理解语法是很困难的。苦背不如练才是行之有效的办法。孩子们永远是故事迷&#xff0c;在教孩子们外语时&…...

uniapp蓝牙打印图片

前言 这是个蓝牙打印图片的功能&#xff0c;业务是打印界面固定的demo范围&#xff0c;这里通过html2canvas插件生成的图片base64&#xff0c;然后图片base64绘制到canvas中去后&#xff0c;获取canvas中的像素信息&#xff0c;然后对像素信息进行一个灰度值处理&#xff0c;灰…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...