Unity | 运行时显示调试信息

news2025/2/26 8:09:12

「公众号:游戏开发手记」

1 简介

在 Unity 编辑器中,我们可以通过点击 Stats 按钮来查看 Statistics 面板,这个面板显示了许多关于游戏渲染的信息,如每帧的渲染时间、Tris 和 Verts 的数量、SetPass Calls 的数量等。但在其他运行环境(如发布后的游戏或移动设备上的游戏)中,Unity 默认并不显示该面板

渲染 Statistics 窗口: 「https://docs.unity.cn/cn/2019.4/Manual/RenderingStatistics.html」

如果想在其他运行环境中查看渲染信息,除了使用 Unity Profiler 工具,也可以通过编写代码的方式实现在游戏中收集相关信息

2 ProfilerRecorder

ProfilerRecorder 是 Profiler API 的一部分,允许开发者在运行时收集特定的性能数据

Rendering Profiler 模块 「https://docs.unity3d.com/cn/2021.3/Manual/ProfilerRendering.html」

Memory Profiler 模块 「https://docs.unity3d.com/cn/2021.3/Manual/ProfilerMemory.html」

通过上面的方法及对应的参数,可以很方便的定制需要的性能数据

源码请在公众号回复:调试信息

源码请在公众号回复:调试信息

官方使用示例:

public class RenderStatsScript : MonoBehaviour
{
    string statsText;
    ProfilerRecorder setPassCallsRecorder;
    ProfilerRecorder drawCallsRecorder;
    ProfilerRecorder verticesRecorder;

    void OnEnable()
    {
        setPassCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "SetPass Calls Count");
        drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count");
        verticesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Vertices Count");
    }
 
    void OnDisable()
    {
        setPassCallsRecorder.Dispose();
        drawCallsRecorder.Dispose();
        verticesRecorder.Dispose();
    }

    void Update()
    {
        var sb = new StringBuilder(500);
        if (setPassCallsRecorder.Valid)
            sb.AppendLine($"SetPass Calls: {setPassCallsRecorder.LastValue}");
        if (drawCallsRecorder.Valid)
            sb.AppendLine($"Draw Calls: {drawCallsRecorder.LastValue}");
        if (verticesRecorder.Valid)
            sb.AppendLine($"Vertices: {verticesRecorder.LastValue}");
        statsText = sb.ToString();
    }
 
    void OnGUI()
    {
        GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
    }
}

3 面板参数

Unity 的 Statistics 面板提供了许多关于游戏性能的重要信息,通过理解和优化这些信息,我们可以提高游戏的流畅性和性能

Statistics 统计面板只统计摄像机视野内所有元素顶点和面片的数量,视野外(摄像机视锥体外)的元素不统计

1 FPS

全称 Frames Per Second,即每秒帧数,表示每秒钟渲染的帧数

2 Batches

在一帧内处理的批次总数,这个数字包括静态和动态批次

3 Draw Calls

即绘制调用,表示在一帧内发出的绘制调用总数

  • Unity 在将游戏对象渲染到屏幕时发出绘制调用。这个数字包括非批量绘制调用以及动态和静态批量绘制调用

  • 要在屏幕上绘制游戏对象,引擎必须向图形 API(例如 OpenGL 或 Direct3D)发出绘制调用。绘制调用通常为资源密集型操作,图形 API 为每次绘制调用执行大量工作,从而导致 CPU 端的性能开

  • 此开销的主要原因是绘制调用之间的状态变化(例如切换到不同材质),而这种情况会导致图形驱动程序中执行资源密集型验证和转换步骤

4 Tris

Triangles 的缩写,在一帧内处理的三角形数

5 Verts

Vertices 的缩写,在一帧内处理的顶点数

6 Screen

当前游戏窗口的分辨率,以像素为单位

7 SetPass Calls

在一帧中切换用于渲染游戏对象的着色器通道的次数

  • 一个着色器(Shader)可能包含多个着色器通道(Pass),每个通道以不同的方式渲染场景中的游戏对象

  • 通道是 Shader 对象的基本元素。它包含设置 GPU 状态的指令,以及在 GPU 上运行的着色器程序

  • 简单的 Shader 对象可能只包含一个通道,但更复杂的着色器可以包含多个通道。您可以为 Shader 对象不同部分定义单独的通道实现不同的工作方式。例如,需要更改渲染状态、不同的着色器程序或不同的 LightMode 标签的部分

8 Shadow Casters

在一帧中投射阴影的游戏对象的数量。如果一个游戏对象投射多个阴影(因为多个光源照亮它),该对象投射的每个阴影都有一个条目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring6(五):Resources、i18n、Validation

文章目录 7. 资源操作:Resources7.1 Resource接口7.2 Resource的实现类7.2.1 UrlResource访问网络资源7.2.2 ClassPathResource 访问类路径下资源7.2.3 FileSystemResource 访问文件系统资源7.2.4 其他 7.3 Resource类图7.4 ResourceLoader 接口7.5 ResourceLoaderA…

EV代码签名证书

为了增强软件的安全性和可信度,EV代码签名证书(Extended Validation Code Signing Certificate)成为了一种具有最高级别保障的关键工具。 EV代码签名证书是一种由受信任的证书颁发机构(CA)或证书供应商提供的高级别代…

linux之shell

一、是什么 Shell是一个由c语言编写的应用程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言 它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地使用 Linux 内核 其本身并不是内核的一部分&#x…

创建SpringBoot项目后无法运行Java文件的解决方法

目录 1.无法运行 (1)解决方法一 (2)解决方法二 2.包无法下载 (1)查看pom.xml文件中包是否存在的方法 (2)如果仓库存在包的处理方式 1.无法运行 当我们创建好一个SpringBoot项目…

make和makefile

一、认识make和Makefile 1、会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 2、一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译…

借助Spire.Doc for Java控件,将 ODT 转换为 PDF。

在通过电子邮件发送或与其他人共享 ODT 文件之前,您可能需要将该文件转换为 PDF,以便任何人都可以跨多个操作系统访问该文件。在本文中,您将学习如何使用Spire.Doc for Java在 Java 中将 ODT 转换为 PDF。 Spire.Doc 是一款专门对 Word 文档…

中国生态功能保护区shp数据

代码 名称 类型 1 秦岭山地生态功能保护区 水涵养生态功能保护区 2 若尔盖一玛曲生态功能保护区 水涵养生态功能保护区 3 滇西北生态功能保护区 水涵养生态功能保护区 4 珠江源(云南部分)生态功能保护区 水涵养生态功能保护区 5 雅鲁藏布…

什么是游戏盾?怎么进行防护?

一.德迅游戏盾(抗D盾)概述 1.抗D盾是针对游戏行业推出的高度可定制的网络安全解决方案,可以针对大型DDoS攻击(T级别)进行有效防御,同时能彻底解决游戏行业特有的TCP协议的CC攻击问题。 2.抗D盾是新一代的智能分布式云接入系统&a…

骨传导蓝牙耳机排行榜,精选五款骨传导耳机推荐!

目前市面上的骨传导耳机大多是传统挂耳式,虽然佩戴更稳固,但是也限制住了其使用场景, 但近两年,有一款名为骨传导耳机的品类进入了大众的视野,它以独特的款式和超乎以往的佩戴舒适性迅速圈粉无数,并成为当下…

第一讲之递归与递推下篇

第一讲之递归与递推下篇 带分数费解的开关飞行员兄弟翻硬币 带分数 用暴力将所有全排列的情况都算出来 > 有三个数,a,b,c 每种排列情况,可以用两层for循环,暴力分为三个部分,每个部分一个数 当然注意这里,第一层fo…

【Spring进阶系列丨第二篇】Spring中的两大核心技术IoC(控制反转)与DI(依赖注入)

前言 我们都知道Spring 框架主要的优势是在 简化开发 和 框架整合 上,至于如何实现就是我们要学习Spring 框架的主要内容,今天我们就来一起学习Spring中的两大核心技术IoC(控制反转)与DI(依赖注入)。 文章目…

关于CISSP中文版计算机化自适应考试(CAT),你需要知道的!

进入ISC2宣布CISSP简体中文的线性考试(Linear Test)被取消,逐步实行CISSP中文版计算机化自适应考试(CAT)。接下来我根据ISC2官网和互联网中关于CAT相关信息,给大家对CISSP认证CAT进行介绍。 一、什么是CISSP认证线性考试&#xf…

实时云渲染技术在智慧园区中的广泛应用

智慧园区是指通过运用先进的信息技术,利用物联网、大数据、云计算等技术手段,来实现对园区内各类设备、设施和资源进行监测、管理、控制和优化的平台。这一概念旨在提高园区运行的效率、实现资源的可持续利用,并通过数字化和智能化手段来推动…

010.cat、find

1、用cat进行拼接 cat命令能够显示或拼接文件内容,不过它的能力远不止如此。比如说,cat能够将标准输入数据与文件数据组合在一起。通常的做法是将stdin重定向到一个文件,然后再合并两个文件。而cat命令一次就能搞定这些操作。 用cat读取文件…

QGIS之二十二矢量线交点处分割线

效果 步骤 1、准备数据 现有的线数据有部分线相交的地方并没有分割 2、分割 运行 3、结果

打造“下一个鹿晗”,是风华秋实的上市“通行证”?

今年以来,文娱公司们动作频频,乐华娱乐、巨星传奇接连“上岸”港交所。近日,因2010年一场“怒放”演唱会声名鹊起的风华秋实,也第七次向港交所递交了招股书。 据招股书披露,2020至2022年,风华秋实连续三年…

网站SEO优化

网站SEO优化 浏览722 一、合理的title、description、keywords 搜索对着三项的权重逐个减小,title值强调重点即可;description把页面内容高度概括,不可过分堆砌关键词;keywords列举出重要关键词。 1、title title,…

Java爬取哔哩哔哩视频(可视化)

链接:我的讲解视频https://www.bilibili.com/video/BV14e411Q7oG/ 本文仅供学术用途 先上图 代码 爬虫核心 import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.gargoylesoftware.htmlunit.*; import org.apache.commons.…

【500强 Kubernetes 课程】第3章 运行docker容器

一 - 三 ,docker基础操作见 第2章7节 四、docker部署web网站 1、安装 nginx (适合场景:学习 - 略) 2、docker 安装 nginx Stage 1 :docker hub 上 搜索 nginx 镜像 Stage 2:拉取官方镜像 Stage 3&…

【开源】基于微信小程序、Vue和SpringBoot的智慧家政系统

项目编号: S 063 ,文末获取源码。 \color{red}{项目编号:S063,文末获取源码。} 项目编号:S063,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服…