Unity 性能优化之图片优化(八)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!

文章目录

  • 前言
  • 一、可以提前和美术商量的事
    • 1.避免内存浪费(UI图片,不是贴图)
    • 2.提升图片性能
  • 二、图片优化
    • 1.图片Max Size修改(内存优化)
      • 压缩格式需要对应平台来选择:
      • 下面图片的对比,节约了256k的内存。当图片数量多了,也是相当可观的。
    • 2.Read/Write Enabled 勾选情况判断
    • 3.Filter Mode 选择
    • 3.Aniso Level
    • 4.Generate Mip Maps
  • 三、使用Sprte Atlas图集(减少Draw Call)
    • 1.导入2D Sprit
    • 2.启用Sprte Atlas
    • 3.创建图集
    • 4.图集添加图片
    • 5.代码动态加载并使用
  • 四、SpriteAtlas 优缺点
  • 总结


前言

图片资源一般都是美术给我们的,但是作为一个程序员我们应该大致要知道怎么调整图片,达到最好利用率。不然美术给什么用什么,一定会造成性能上和内存上的困扰。

一、可以提前和美术商量的事

首先美术在做一张图之前,我们可以找他商量一下(说话声音温柔一点),有主见也显得自己很懂得样子(哈哈…)。当然实际得商量内容也和美术人员得制作习惯息息相关。

1.避免内存浪费(UI图片,不是贴图)

共用得某个图片(几个地方都会用到),如果可以不要设计得太复杂,因为可能会做不了9宫格拉伸,因为拉伸了就改变了图片本来得样子了,那不是我们想要得结果。

2.提升图片性能

1.(仅移动端有效)如果这张图片是应用在移动端的,确保每条边的长度都是2的正整数次方个像素,例如:2、4、8、16…256、512、1024、2048、4096…。
图片源文件分辨率为2次幂,在此分辨率下Unity内置的压缩机制就会生效,压缩效率很高;
2.减少透明和阴影的设计;

二、图片优化

1.图片Max Size修改(内存优化)

对于许多移动端的游戏, 2048x2048或1024x1024足以满足纹理图集的要求,而512x512足以满足应用于3D模型的纹理的要求。
比较:因为这张图片本身大小是512*512,一般情况我们不会这样子压缩,因为会导致图片模糊失真,一般用1024,具体情况需要参考压缩后的效果是否接受,来确定压缩程度

压缩格式需要对应平台来选择:

在这里插入图片描述

下面图片的对比,节约了256k的内存。当图片数量多了,也是相当可观的。

Max Size:2048
大小:341.4k
在这里插入图片描述
压缩后:
Max Size:256
大小:85.4k
在这里插入图片描述

2.Read/Write Enabled 勾选情况判断

如果图片不需要代码去读写,则可以取消勾选Read/Write Enabled,如果勾选可能导致双倍的内存占用。
在这里插入图片描述

3.Filter Mode 选择

Filter Mode一般选择Bilinear即可
在这里插入图片描述

Bilinear,平衡 性能和视觉效果
Point(no filter),则视觉效果不太行,但性能开销也小
Trilinera,则视觉效果最好,但性能开销最大

3.Aniso Level

Aniso Level一般选择1,只有个别比较重要的图片才需要设置为大于等于2的值。

4.Generate Mip Maps

图片导入Unity后,会默认生成Mip Maps格式。
理解:
当摄像机到这幅贴图距离近,则显示最原始的图片,当摄像机距离这幅贴图的距离远,则这幅贴图会变模糊,以此降低渲染的性能消耗。
但由于之前显示的一幅图,现在变成了有多幅1所以这样会略微增加内存消耗。如果确定本游戏的摄像机到图片的距离几乎不怎么变化,则可以禁用这个功能。
点击该贴图,在Inspector面板的Advanced中取消勾选Generate Mip Maps,这样就不会生成Mip Maps,增加游戏性能。
如果是2D游戏则可以禁用这个功能。如果是UI图,也可以禁用这个功能。

三、使用Sprte Atlas图集(减少Draw Call)

1.导入2D Sprit

在Window–>Package Manager-Packages:Unity Registry–>中搜索并安装2D Sprite–>点击Install
在这里插入图片描述

2.启用Sprte Atlas

Edit–>Project Settings–>Editor–>Mode–>Sprite Atlas V1 - Always Enabled
如下图所示:
在这里插入图片描述
默认是关闭的,不做修改,创建图集时会出现下面提示
在这里插入图片描述

3.创建图集

右键Assets文件夹存储的位置—>Create–>2D–>Sprite Atlas
在这里插入图片描述

4.图集添加图片

点击+号添加即可,点击Pack Preview,就完成了。
在这里插入图片描述

5.代码动态加载并使用

SpriteAtlas atlas = Resources.Load<SpriteAtlas>("New Sprite Atlas");//图集名称
Images01.sprite = atlas.GetSprite("0");//“0”就是图集中要加载图片的名字

四、SpriteAtlas 优缺点

Sprte Atlas用于制作图集,即把多张图片打包成一整张图集。
Sprte Atlas的优点:
1、减小资源文件所占的大小。
2、打包到同一个Sprte Atlas图集中的图片会共享相同的纹理数据,减少了重复的存储,往往能起到优化内存的作用。
3、可以减小DrawCall,提高游戏的渲染性能。
Sprte Atlas的缺点:
1、需要手动将图片添加到Sprte Atlas,增加了额外的工作量。
2、当加载图集中的任意一张图,则会先加载整个图集。如果把一些不常用的图打包到同一个图集中,则会浪费内存。
3.图集里面的图,尽量让同一时期渲染的图制作成在一个图集里(这一点很重要,不然就失去了优化的意义了)

总结

好记性不如烂笔头!
上一章:链接: Unity 性能优化之光照优化(七)
下一章:Unity 性能优化之UI优化(九)

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

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

相关文章

Momentum靶机系列Momentum2

先进行arp扫描&#xff1a; 获得渗透靶机的IP&#xff1a;192.168.13.142 扫描一下靶机的使用的端口&#xff1a; 具有tcp端口和http服务的80端口 可以扫描一下80端口的http服务&#xff1a; 可以发现一个网站&#xff1a;http://192.168.13.142 打开该网址&#xff1a; 查看…

Flink 部署模式

目录 概述 部署模式 会话模式&#xff08;Session Mode&#xff09; 单作业模式(Per-Job Mode) 应用模式(Application Mode) 运行模式&#xff08;资源管理模式&#xff09; Standalone运行模式 会话模式部署 应用模式部署 Yarn运行模式 会话模式部署 单作业模式部…

鸿蒙开发核心技术都有哪些【都是从零开始】

鸿蒙开发核心技术都有哪些&#xff1f;&#xff1a;【持续1年的时间公关鸿蒙技术】 我们能做哪些呢&#xff1f; 还是从UI业务开始吧 面试题1&#xff1a; 基于STAGE模型项目重构等问题 代理设计模式&#xff0c;业务与架构隔离 中介者模式&#xff0c;和代理设计模式的区别…

湖仓一体 - Apache Arrow的那些事

湖仓一体 - Apache Arrow的那些事 Arrow是高性能列式内存格式标准。它的优势&#xff1a;高效计算&#xff1a;所有列存的通用优势&#xff0c;CPU缓存友好、SIMD向量化计算友好等&#xff1b;零序列化/反序列化&#xff1a;arrow的任何数据结构都是一段连续的内存&#xff0c;…

uniapp使用iconfont

1、把这两个文件在项目的静态资源目录下 2、修改iconfont.css文件 3、最后在app.vue中引入

AI换脸免费软件Rope中文汉化蓝宝石版本全新UI界面,修复部分已知错误【附下载地址与详细使用教程】

rope蓝宝石版&#xff1a;点击下载 注意&#xff1a;此版本支持N卡、A卡、CPU&#xff0c;且建议使用中高端显卡&#xff0c;系统要求win10及以上。 Rope-蓝宝石 更新内容&#xff1a; 0214版更新&#xff1a; ①&#xff08;已修复&#xff09;恢复到以前的模型荷载参数。有…

Python中GDAL批量将多个遥感影像各波段数值缩小10000倍的方法

本文介绍基于Python中的gdal模块&#xff0c;批量读取大量多波段遥感影像文件&#xff0c;分别对各波段数据加以数值处理&#xff0c;并将所得处理后数据保存为新的遥感影像文件的方法。 首先&#xff0c;看一下本文的具体需求。我们现有一个文件夹&#xff0c;其中含有大量.ti…

OceanBase 如何实现多层面的资源隔离

OceanBase的资源隔离涵盖了多个方面&#xff0c;如物理机器间的隔离、不同租户之间的隔离、同一租户内的隔离&#xff0c;以及针对大型查询请求的隔离等。在实际应用OceanBase的过程中&#xff0c;我们经常会遇到这些操作场景或产生相关需求。这篇文章针对这些内容进行了简要的…

软件测试--接口测试

接口测试&#xff1a;直接对后端服务的测试&#xff0c;是服务端性能测试的基础 接口&#xff1a;系统之间数据交互的通道 接口测试&#xff1a;校验接口响应数据与预期数据是否一致

docker私有仓库部署与管理

一、搭建本地公有仓库 1.1 首先下载registry镜像 docker pull registry 1.2 在daemon.json文件中添加私有镜像仓库地址并重新启动docker服务 vim /etc/docker/daemon.json 1.3 运行registry容器 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…

04_SpringCloud

文章目录 单体架构与微服务架构的介绍单体架构微服务架构 微服务的实现服务之间的调用服务注册中心Eureka 注册中心Eureka的自我保护机制Nacos注册中心 单体架构与微服务架构的介绍 单体架构 单体架构 所有的代码最终打包成一个文件(jar包)&#xff0c;整个系统的所有功能单元…

(三十六)第 6 章 树和二叉树(二叉树的顺序存储表示实现)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ?…

[Kubernetes] Rancher 2.7.5 部署 k8s

server: 192.168.66.100 master: 192.168.66.101 node1: 192.168.66.102 文章目录 1.rancher server 安装docker2.部署k8s3.kubeconfig 1.rancher server 安装docker 所有主机开通ipv4 vi /etc/sysctl.conf#加入 net.ipv4.ip_forward 1#配置生效 sysctl -prancher-server开通…

鸿蒙准备1

鸿蒙心路 感慨索性&#xff0c; 看看鸿蒙吧。打开官网相关介绍 新建工程目录结构 感慨 最近面试Android应用开发&#xff0c;动不动就问framework的知识&#xff0c;什么touch事件的触发源是啥&#xff08;eventHub&#xff09;&#xff0c;gc流程是啥&#xff0c;图形框架是什…

美国纽扣电池UL4200A及16CFR1262标准亚马逊要求

2023年9月21日&#xff0c;美国消费品安全委员会CPSC(Consumer Product Safety Commission) 决定采用UL 4200A-2023&#xff08;包含纽扣电池或硬币电池的产品安全标准&#xff09;作为包含纽扣电池或硬币电池的消费品的强制性消费品安全规则&#xff0c;相关要求同时被编入到1…

JMeter - 如何测试REST API / 微服务

概述&#xff1a; 有许多方法和工具可用于测试REST API。 当我需要测试REST API时&#xff0c;在查看了各种工具和选项之后&#xff0c;由于以下原因&#xff0c;我选择了JMeter。 JMeter是免费和开源的。 JMeter可以从CSV文件中直接读取您的测试数据。参数化非常简单。 可以…

SparkSQL与Hive整合 、SparkSQL函数操作

SparkSQL与Hive整合 SparkSQL和Hive的整合&#xff0c;是一种比较常见的关联处理方式&#xff0c;SparkSQL加载Hive中的数据进行业务处理&#xff0c;同时将计算结果落地回Hive中。 整合需要注意的地方 1)需要引入hive的hive-site.xml&#xff0c;添加classpath目录下面即可…

【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】

HTMLCSS家乡河南主题网页目录 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、页面效果Page1 首页Page2 开封游玩Page 3 开封美食Page4 留言 &#x1f308; 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 &#x1f40b;四…

springboot lua检查redis库存

需求 最近需求需要实现检查多个马戏场次下的座位等席对应库存渠道的库存余量&#xff0c;考虑到性能&#xff0c;决定采用Lua脚本实现库存检查。 数据结构 库存层级结构 redis库存hash类型结构 实现 lua脚本 --- 字符串分割为数组 local function split(str, char)local…

IIoT:数据融合在工业物联网中的应用——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断发展&#xff0c;工业物联网&#xff08;IIoT&#xff09;已经逐渐渗透到各个行业&#xff0c;为企业的生产和管理带来了前所未有的便利。 然而&#xff0c;与此同时&#xff0c;海量的数据也为企业带来了挑战。如何将这些…