Unity图集

这篇具有很好参考价值的文章主要介绍了Unity图集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

讲讲Unity图集OvO

图集它是一种将多个纹理合并为一个组合纹理的资源。Unity可以调用此单个纹理来发出单个绘制调用而不是发出多个绘制调用,能够以较小的性能开销一次性访问压缩的纹理

具体来讲,就是如果将多个纹理合并成一个图集,那么涉及到这些纹理的正常绘制时,只需要调用一次DrawCall即可,方便渲染合批,降低渲染消耗。

在不借助第三方插件的情况下,Unity有两个打图集的方式

1.Sprite Packer(在Unity2020.1及之后版本弃用)

首先需要在Edit>Project Settings>Editor中找到Sprite Packer一栏,并将其设置为Always Enabled(Legacy Sprite Packer)
unity 创建图集,unity,游戏引擎
通过设置图片的Packing Tag来将其归类到不同的图集中
unity 创建图集,unity,游戏引擎
接着在Window>2D>Sprite Packer打开Sprite Paker窗口,点击Pack即可打图集。

2.Sprite Atlas

同样需要在Edit>Project Settings>Editor中找到Sprite Packer一栏,并将其设置为Always Enabled
unity 创建图集,unity,游戏引擎
之后创建Sprite Atlas,在Objects for Packing中指定纹理或者文件夹来打图集
unity 创建图集,unity,游戏引擎
新版的SpriteAtlas相比之前的SpritePacker做了更多的优化,比如可以实时查看图集的大小,图集里面元素的排列布局,并且增加了LateBinding(即不勾选include in build,会把Prefab和Atlas的依赖关系解开)等特性

相较于旧版的Sprite Packer,使用Sprite Atlas时每一个图集都是用一个单独的SpriteAtlas管理起来,图集的格式也被定义在这个资源中,预览单张图集不用像旧版的那样需要把所有的图集都集中在一个SpritePacker的编辑器窗口中预览,而是可以实时在Inspector窗口可视化预览。Sprite Packer的图集管理方式在图集数量多的时候,查找不方便还非常卡,新版的作业方式是一种分而治之的理念,更为方便和快捷。

注意:放在Resources文件夹下的图片不会被打包到图集中,打包好的图集会放在Project/Library/AtlasCache里面

3.图集整理策略及资源优化

图集整理要点

  • 图集要尽可能紧凑,并且图集本身不能太大也不要太小
  • 同一界面的小图尽可能在同一个图集中,降低DrawCall,也防止出现热更一个界面需要热更多个图集的情况
  • 被很多界面引用的图最好放在一个common图集下统一管理

需要注意图集大小需要是2的n次方,这是因为OpenGL在载入图片纹理时,所用内存会自动扩张到2的n次方,这种自动转化过程比较慢,所以提前将资源转化为符合标准的图片,这样可以提升转化速度

纹理优化
纹理优化的目的是让它们占用的内存尽量的小,纹理加载进内存后,大小计算公式如下:

纹理内存大小(字节) = 纹理宽度 x 纹理高度 x 像素字节
像素字节 = 像素通道数(R/G/B/A) x 通道大小(1字节/半字节)

优化方向:

  • 调整纹理尺寸:
    根据项目实际情况将贴图都缩小至合适的大小。这里的合适大小是指渲染对象在画面中大多数情况下不可能达到的最大尺寸,这个尺寸最好保持2的N次方。
  • 调整纹理压缩方式:
    为了让贴图在手机中运行时占用尽可能少的内存,需要设置贴图的压缩格式,目前 Unity 支持的主要压缩格式有:android 上的 ETC/ETC2,iOS 上的 PVRTC,以及未来可能会使用的 ASTC。这几个压缩格式有自己的特点:
    ETC:不支持透明通道,被所有 android 设备支持。
    ETC2:支持透明通道,Android 设备的 GPU 必须支持 OpenGL es 3.0 才可以使用,对于不支持的设备,会以未压缩的形式存在内存中,占用更多内存。
    PVRTC:所有苹果设备都可以使用,要求压缩纹理长宽相等,且是 2 的幂次(POT,Power of 2)。
    ASTC:高质量低内存占用,未来可能普遍使用的压缩格式,现在有一部分机型不支持。
  • 提高纹理复用率:
    建立共享图库。将通用的元素放至共享库,例如按钮/进度条/背景/UI通用元素等。
    用九宫格图代替大块背景图。九宫格在游戏开发中是比较常见的UI组件。
    纹理元素通过变换可组合成复合纹理。例下图,上下左右对称的背景图可以用4张相同贴图实例通过旋转/翻转后获得

4.图集打AB包

需要注意的,UGUI的图集,无论新旧,在构建AssetBundle的时候,同一个图集内的所有图元都要放在同一个AssetBundle中,否则,如果同一个图集的图元被分散到多个AssetBundle中,那么每一个AssetBundle都会包含一份这个图集的Copy,最终的结果就是包体冗余、内存膨胀和加载耗时等问题,使用Sprite Atlas时可以通过勾选include in build,并将图集也打成一个AB包来解决这个问题。

参考:

【Unity游戏开发】SpriteAtlas与AssetBundle最佳食用方案
【内存优化】图集整理策略
Unity图集Atlas使用总结
Unity 分离贴图 alpha 通道实践文章来源地址https://www.toymoban.com/news/detail-734614.html

到了这里,关于Unity图集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年02月11日
    浏览(74)
  • Unity Physics2D 2d物理引擎游戏 笔记

    2d 材质 里面可以设置 摩擦力 和 弹力 Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。 Kinematic 动力学刚体 动力学刚体不受重力和力的影响,而受用户的

    2023年04月24日
    浏览(124)
  • Unity和UE4两大游戏引擎,你该如何选择?

    目录 游戏引擎 2 —— 难易区别 编程语言 3 —— 游戏产品 UE4制作的游戏产品  Unity制作的游戏产品  产品类型 5 —— 资源商店 6 —— 人才需求 平均薪资 总结      Unity和UE4都是游戏引擎,所谓游戏引擎就是集成了复杂功能的游戏开发软件,他们帮我们实现了复杂的底层逻

    2023年04月08日
    浏览(73)
  • GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

    GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的机遇,第一个是oprea的合作奖,第二个是用支持c#换来的微软的投资,第三个是虚幻

    2024年02月14日
    浏览(88)
  • Unity性能优化 - 动态图集

    Unity 动态图集是 Unity 引擎中用于处理游戏纹理优化的一种技术。它可以将多个纹理打包到一个图集中,减少游戏中需要加载的纹理数量,从而提高游戏性能。 在运行时,Unity 动态图集会根据游戏需要动态地生成纹理,并将它们打包到一个图集中,这样可以大幅降低游戏加载

    2024年02月13日
    浏览(38)
  • Unity图集打包

    首先推荐unity官网assetbundle资源分析工具吧 git地址:GitHub - Unity-Technologies/AssetBundles-Browser: Editor tool for viewing and debugging asset bundle contents before and after builds 如果无法下载可以点击此链接下载 官方说明文档 Unity Asset Bundle Browser 工具 - Unity 手册  工具界面 要理解图集打包原理一

    2024年02月14日
    浏览(39)
  • Unity图集

    讲讲Unity图集OvO 图集它是一种将多个纹理合并为一个组合纹理的资源。Unity可以调用此单个纹理来发出单个绘制调用而不是发出多个绘制调用,能够以较小的性能开销一次性访问压缩的纹理 具体来讲,就是如果将多个纹理合并成一个图集,那么涉及到这些纹理的正常绘制时,

    2024年02月06日
    浏览(36)
  • 【Unity】Unity开发学习和项目实践02——创建第一个Unity项目和游戏物体

    创建第1个Unity项目 打开Unity hub,点击新项目 以下有四处地方需要注意选择: 1.Unity编辑器版本 2.项目模板 3.项目名称 4.项目保存位置 点击创建项目 ok,进入编辑器了 把编辑器界面布局稍微改一下,改成2by3 点击Edit 点击 project settings,这是对我们所创建工程的设置 此外还有对

    2024年01月25日
    浏览(56)
  • Unity UGUI5——图集

    ​ 字面理解 DrawCall,就是绘制呼叫的意思,表示 CPU(中央处理器)通知 GPU(图形处理器-显卡) 就是 CPU (处理器)准备好渲染数据(顶点,纹理,法线,Shader 等等)后 告知 GPU(图形处理器-显卡)开始渲染(将命令放入命令缓冲区)的命令 ​ 简单来说:一次 DrawCall 就是

    2024年02月15日
    浏览(38)
  • Unity之创建第一个2D游戏项目

    一 Unity环境配置 1.1 Untity资源官网下载:https://unity.cn/releases 1.2 Unity Hub集成环境,包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD,JDK,NDK工具,用于android环境的运行 二 创建Unity项目 2.1 新建2D模板项目 2.2 新建2D物体 2.3 新建C#脚本文件 

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包