Unity 优化合集

1️⃣ 贴图优化

1. Read/Write Enable

这个属性勾选后允许你在运行时读取和写入纹理数据,这对于需要实时生成内容或者需要动态修改纹理的场合非常有用但在大部分情况下这是不必要的。如果打开这个属性,会使运行时贴图大小翻倍,内存中会额外存储一份贴图数据。所以默认关闭这个属性,在需要的时候开启。

Pasted image 20240511175434

2. Mipmap

优点:会优化显存带宽,用来减少渲染,因为可以根据实际情况,会选择适合的贴图来渲染,距离摄像机越远,显示的贴图像素越低,反之,像素越高!

缺点:会占用内存,因为mipmap会根据摄像机远近不同而生成对应的贴图,所以必然占内存!

MipMap可以用于跑酷类游戏,当角色靠近时,贴图清晰显示,否则模糊显示。

如果我们使用的贴图不需要这样效果的话,就一定要把Generate Mip Maps选项和Read/Write Enabled选项取消勾选!因为Mipmap会十分占内存!
Mipmap会让你的包占更大的容量!

Pasted image 20240511175540

3. 贴图压缩

优点:可以加快加载速度,也可以减少内存的占用。
缺点:不同的压缩格式在不同的平台上可能会有兼容性问题,压缩可能导致丢失纹理细节。
Pasted image 20240511174646

[RGBA Compressed]
RGBA Compressed: 是一种通过压缩的方式来存储RGBA(红色、绿色、蓝色和透明度)的四个通道的图片格式。

优点:
体积小,节省空间:通过对RGBA通道进行压缩,相较于未压缩的RGBA格式,可以大大降低文件的体积,节省存储空间。

完整的色彩信息:由于RGBA Compressed同时包含了红色、绿色、蓝色和透明度四个通道,因此能够完整且详细地表现图像的色彩信息。

透明度通道:不仅可以存储RGB色彩信息,还可以存储透明度信息,在进行复杂的图像编辑和动画制作时非常有用。

缺点:
有损压缩:虽然RGBA Compressed可以有效地减少文件大小,但它是一种有损压缩,因此可能会在一定程度上降低图片的质量。

兼容性问题:尽管RGBA Compressed格式可以提供丰富的色彩和透明度信息,但并非所有的图像处理软件或设备都能完全支持此格式,可能存在兼容性问题。

处理速度:由于需要进行压缩和解压缩操作,所以在处理大量的或者高分辨率的图像时,可能会相较于其他未压缩的格式更为耗时。

[DXT]
DXT:全称DirectX Texture Compression Format,是由Nvidia开发的一种在计算机图形绘制中常见的纹理压缩格式,常见于Windows平台的游戏中,包括DXT1,DXT3和DXT5。其中,DXT5是一种常见的压缩方式,它提供高达6:1的压缩比,但可能会牺牲一些图像详细度。在Unity中,DXT格式是默认的PC平台和游戏主机平台的纹理压缩格式。

优点:
空间效率:DXT格式是一种有损压缩格式,能够将原始数据的体积减小到1/8或者1/4,为图形绘制提供更大的空间。

显存效率:在运行时,DXT格式直接存储在GPU的显存中,提升了纹理读取的效率。

兼容性:DXT格式得到了广泛的硬件支持,无论是桌面、移动设备或者游戏主机,大部分的设备都能够直接处理DXT格式的纹理。

缺点:
图像质量:DXT格式是一种有损压缩格式,虽然能够显著减小数据体积,但是也会带来不可避免的图像质量损失。

色彩问题:DXT格式在处理高色彩深度的图像时,可能会出现色块或者色带问题。

压缩速度:相较于其他格式,DXT格式的压缩速度可能会稍慢一些。

[PVRTC]
PVRTC: PowerVR Texture Compression(PVRTC)是专为PowerVR系列的图形处理器设计的,主要用在iOS设备上。PVRTC的压缩比很高,可以达到8:1或4:1,但这种压缩方式可能会牺牲一部分图像质量。

优点:
高压缩比:PVRTC提供了极高的压缩比,可以将图片体积减小到原来的1/2、1/4、1/8等,极大地节省了存储空间和带宽。

支持多通道:PVRTC支持RGBA四通道,因此能够展示丰富的颜色和透明效果。

实时解压:PVRTC可以在GPU侧实时解压,避免占用CPU资源,提高了性能。

缺点:
图像质量:由于其是一种有损压缩方式,可能会导致一些图像质量损失。

兼容性问题:PVRTC主要是为Imagination Technologies的PowerVR系列GPU设计的,对于非PowerVR GPU,可能会遇到兼容性问题。

需要专门的工具进行压缩:创建PVRTC纹理需要使用专门的PVRTexTool,可能对某些开发者来说不太方便。

压缩速度较慢:在某些情况下,PVRTC的压缩速度可能相比其他压缩格式较慢。

PVRTC格式通常在需要高效压缩和处理图像的移动设备上使用,但在使用时需要考虑到其可能的图像质量损失和兼容性问题。

[ETC]
ETC: 全称Ericsson Texture Compression(ETC)是一种面向OpenGL ES和WebGL的纹理压缩格式,专为Android设备设计的一种压缩格式。ETC1只支持RGB压缩,不支持Alpha通道,而ETC2则提供了对Alpha通道的支持。

优点:
高压缩比:ETC能有效减少图像文件大小并维持相当高的图像质量,有利于在有限的内存空间和带宽下优化应用运行表现。

广泛兼容:ETC拥有较好的跨平台性,适用于各种类型的设备,被广大基于OpenGL ES和WebGL的应用所接受。

实时解压:ETC格式的纹理可以在GPU侧实时解压,避免占用CPU资源。

缺点:
只支持RGB信息:ETC的标准版本仅支持RGB颜色,ETC1不支持透明度,而且压缩后图像质量可能会下降。ETC2虽然支持透明度,但是不是所有Android设备都支持ETC2。

图像质量:与许多有损压缩算法一样,ETC压缩可能会牺牲一部分图像质量。

总的来说,ETC是为OpenGL ES和WebGL设计的优秀纹理压缩格式。它提供了一种平衡图像质量和存储需求的有效方式,适用于各种计算资源受限制的场景。

[ASTC]
ASTC:全称 Adaptive Scalable Texture Compression(ASTC)是由ARM开发的一种高效的纹理压缩格式,是一种更加先进的压缩格式,支持各种纹理类型和细节级别。它在许多现代移动设备上都有支持。

优点:
高效压缩:ASTC提供了高度适应的压缩能力,能够非常有效地减小纹理所占用的存储空间和内存带宽。

灵活性:ASTC支持的纹理大小范围非常广,从4x4到12x12像素,甚至可以压缩3D纹理,提供了极大的灵活性。

高质量:ASTC提供了良好的图像质量,并支持包括RGBA在内的多种颜色格式和渐变效果。

硬件解压缩:ASTC格式的纹理可以在GPU侧进行解压,这有助于提高渲染性能并减低CPU的压力。

缺点:
容性问题:虽然ASTC正在成为新标准,但仍存在一些设备不支持ASTC格式的情况,开发者需要考虑向后兼容问题。

压缩速度:ASTC提供的块大小和压缩选项较多,这增加了压缩时间,压缩过程可能相对较长。

4. MaxSize

这个属性限制纹理尺寸,根据最终真机效果调整,当然越小越好。
Pasted image 20240511174824

2️⃣ UI优化

1. Canvas层级管理

  • Canvas细分:基于UI元素的更新频率,将静态元素与动态元素分离至不同Canvas。静态元素共享一个Canvas,而具有相似更新周期的动态元素应置于规模较小的独立Canvas中,以提升渲染效率。
  • Canvas属性统一:确保同一Canvas内的元素具备一致的Z值、材质和纹理属性。
  • 动态元素管理:对于仅在特定条件下显示的UI元素,如战斗伤害指示器,在不活动时应设为禁用状态,以避免不必要的绘制调用(Draw Call)。
  • Canvas禁用策略:在需要隐藏整个Canvas的场景中,禁用Canvas组件优于禁用GameObject,以减少Mesh重建的性能开销。

2. 输入处理优化

  • GraphicRaycaster使用限制:仅在需要处理用户输入的Canvas上启用GraphicRaycaster组件,并通过将非输入响应元素移至独立Canvas以最小化相交检测范围。
  • Raycast Target禁用:对于无需响应用户输入的UI元素,如纯展示的文本和图像,应关闭其Raycast Target属性。
    image.png

3. Layout性能优化

  • 避免Layout Group:鉴于Layout Group的高更新成本,建议在静态UI设计中避免使用,或在动态UI中通过脚本在布局完成后立即禁用。
  • Layout Group布局策略:在必须使用Layout Group时,应避免嵌套使用,以降低性能损耗。

4. 渲染优化

  • 减少Overdraw:避免UI元素过度重叠,以减少Overdraw现象,考虑在运行时合并重叠元素以实现批处理渲染。
  • 全屏UI性能调整:在全屏UI场景中,隐藏所有非必要渲染对象,并适当降低帧率以减少GPU负载。
  • 打包图集:将多个小纹理合并到一个大的纹理图集(Atlas)中,减少纹理切换和内存占用。
  • 图像资源优化:对图像资源进行压缩和格式优化,减少内存占用,加快加载速度。
  • 材质合并:通过合并多个UI元素的材质,减少渲染过程中的Draw Call数量。

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

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

相关文章

gptpdf:使用大模型(如 GPT-4o)将 PDF 解析为 markdown。

今天给大家分享一个开源的项目, 使用视觉大语言模型(如 GPT-4o)将 PDF 解析为 markdown。 方法非常简单(只有293行代码),但几乎可以完美地解析排版、数学公式、表格、图片、图表等。 使用 GeneralAgent lib 与 OpenAI API 交互。…

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力

香橙派AIpro部署YOLOv5:探索强悍开发板的高效目标检测能力 一、香橙派AIpro开箱使用体验 1.1香橙派AIpro开箱 拿到板子后第一件事情就是开箱: 开箱后可以看见一个橘子的标识,也就是香橙派了,并且还有四个大字:为AI…

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…

双向带头循环链表

一、概念 何为双向:此链表每一个节点的指针域由两部分组成,一个指针指向下一个节点,另一个指针指向上一个节点,并且两头的节点也是如此,头节点的下一个节点是尾节点,尾节点的上一个节点是头节点&#xff1b…

R语言实战——栅格聚合方法(超方便)

今天给大家分享一个栅格聚合方法,使用R语言实现! 1 为什么要做栅格聚合 栅格数据是我们地理学使用最广泛的数据类型之一。所谓栅格聚合其实就是根据栅格数据进行一系列运算得到一个我们想要的数据。 我个人认为,应用最广泛的,可…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字,如何恢复? 比如 “门” 和 “直接” 的"直"字,显示成了 方法 修改字体, 菜单栏选择 Settings(设置),Style Configurator…(语言格式设置…)&#xf…

SSM城镇居民社区再生资源回收系统-计算机毕业设计源码04175

摘 要 本论文介绍了一个基于SSM(Spring Spring MVC MyBatis)技术的城镇居民社区再生资源回收系统的设计与实现。随着社会对环境保护意识的不断提高,再生资源回收成为了一种重要的环保行动。然而,传统的再生资源回收方式存在着信…

[数仓]十二、离线数仓(Atlas元数据管理)

第1章 Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 Atlas的具体功能如下: 元数据分类 支持对元数据进行分类管理,例…

springboot3——项目部署

springboot的项目开发完了,怎么样把他放到服务器上或者生产环境上让他运行起来跑起来。就要牵扯到项目部署,打包的方式了。 springboot支持jar和war: 打jar包:默认方式,项目开发完打个jar包,通过命令把jar包起起来就…

刚刚,Claude国内可直连!

刚刚,Claude国内可直连! 大家好!我是科技博主Maynor。今天我们要分享一个激动人心的消息:知名AI助手Claude现在可以在国内直接访问了! 这对于科技爱好者、学生、研究人员和各行各业的专业人士来说都是一个重大利好。…

大模型时代的小红书+马蜂窝:华人团队开发 的AI旅行app

简介 一周前,由红杉投资的硅谷初创公司UTA AI推出了其核心产品Wanderboat AI,这是一个基于GPT-4技术的智能旅行规划工具。 该平台允许用户通过对话交互来明确旅行的偏好和需求,并提供包括目的地、活动和实用建议在内的定制化旅行建议。 Wa…

算法题-字符串

1.C字符串 c提供了一下两种类型的字符串表示形式: c风格字符串c引入的string类类型 1.1C风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的…

前端项目本地的node_modules直接上传到服务器上无法直接使用(node-sasa模块报错)

跑 jekins任务的服务器不能连接外网下载依赖包,就将本地下载的 node_modules直接上传到服务器上,但是运行时node-sass模块报错了ERROR in Missing binding /root/component/node_modules/node-sass/vendor/linux-x64-48/binding.node >> 报错信息类…

MySQl高级篇-事务、锁机制、MVCC

存储引擎的选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。 InnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较…

多媒体软件开发选择Animate软件还是Unity3D软件?

以下内容可能有一些片面,因为多媒体软件开发平台有很多,因为接触Animate和Unity3D比较多,所以这里仅对这两款进行分析! Animate软件与Unity3D软件都是经常在多媒体展馆中用来制作互动展示内容的,对于这两种开发平台&a…

【可视化大屏系列】Echarts之饼图绘制

本文为个人近期学习总结,若有错误之处,欢迎指出! Echarts之饼图绘制 前言1.需求2.实现效果3.大概思路4.代码实现子组件写法父组件写法5.附加(1)圆环饼图的绘制(2)南丁格尔玫瑰饼图A.半径展示数据的大小B.面积展示数据的大小前言 在前文页面布局、DataV 的使用、Echarts…

【数据结构】--- 堆的应用

​ 个人主页:星纭-CSDN博客 系列文章专栏 :数据结构 踏上取经路,比抵达灵山更重要!一起努力一起进步! 一.堆排序 在前一个文章的学习中,我们使用数组的物理结构构造出了逻辑结构上的堆。那么堆到底有什么用呢&…

GO channel 学习

引言 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁&#…

ASP.NET Core----基础学习06----将所有数据在页面中显示 布局页面的使用

文章目录 1. 将数据以list的形式展示在页面中2. 布局页面的使用3. 自定义设置视图文件是否需要加载的JS 1. 将数据以list的形式展示在页面中 step1:在接口文件中添加新的方法GetAllStudents() step2:在mock的数据中添加方法GetAllStudents(&a…

关于mogdb vs kingbase的测评 说明

上周5同事转了一个帖子给我,说某公众号写了一篇MogDB vs KingBase的文章测评。该博主使用sysbench测了一些场景,其中大部分场景Mogdb相比KingBase而言表现都要差一些,只有一个场景比kingbase高很多。 老实说第一眼看到这个文章,我…