【从零开始游戏开发】静态资源优化 | 全面总结 |建议收藏

news2025/4/17 9:11:41

你知道的越多,你不知道的越多 🇨🇳🇨🇳🇨🇳
点赞再看,养成习惯,别忘了一键三连哦 👍👍👍
文章持续更新中 📝📝📝


1️⃣Audio导入设置🔥🔥🔥

Unity下资源工作流程图
在这里插入图片描述

资源类型与导入

⭕️外部导入资源
    模型网格Mesh、纹理、音频、字体、动画、视频

⭕️内部创建资源
    prefab预制体、AnimationController、TimeLine、RenderTexture、VFX

资源检查并优化
UPR Asset Checker

资源检查报告解读

⭕️Audio
    检查ForceToMono,减少内存和磁盘占用
    使用未压缩Wav格式,通过平台控制压缩
    安卓使用Vorbis压缩方式,ios用MP3
    音频采样值通常为为22000HZ
        设置为OverrideSampleRate

    ⭕️音频加载类型 LoadType
        小于200KB 使用DecompressOnLoad
        大于200KB 使用Compressed In Memory
        超大的背景音乐 使用streaming流式加载 避免卡顿


EditorSetting
FBX
Prefab
Scene
Texture

安卓手机优化前后
包体大小减少
内存开销大幅度减少
CPU开销小幅度上升


2️⃣Model导入设置检查与优化🔥🔥🔥

Unity模型导入基本流程

在这里插入图片描述

DCC工具导出设置(美术)

⭕️导出FBX格式
⭕️优化原始导入模型文件,删除不必要的数据
    统一单位
    导出网格必须是多边形括扑,不能是贝塞尔曲线、样条曲线等Unity不支持的网格
    导出之前确保所有的Deforners都烘焙到网格模型上
    不建议将模型使用的纹理随模型导出
    导出时不要携带摄像机、灯光、材质等场景信息

⭕️原始模型对性能的影响点
    最小化面数、三角面尽量分布均匀
    不需要微三角面(1个三角面只包含个位数像素,LOD解决)
    合理的括扑结构与平滑组,尽可能是闭包,防止Unity烘焙错误
    尽量少的材质个数
    尽量少的蒙皮网格
    尽量少的骨骼数量
        防止Unity后期CPU和GPU性能消耗

    FK与IK节点分离,导出时要删除IK骨骼节点
        Unity不支持导入的IK骨骼

模型导入设置

⭕️设置模型Model
    Scene
    Meshes
        SkinMesh动态修改要开启Write/read
        Mesh压缩
    Geometry几何体

⭕️设置Animation
    模型不涉及动画,可以关闭

⭕️设置Material
    模型不涉及动画,None

⭕️模型优化
    尽可能网格合并
    尽可能共享材质
    不使用网格碰撞体
    不必要 不开启读写网格
    合理使用LOD
    SkinWeights受骨骼影响多
    合理压缩网格
    不需要rigs和BlendShapes劲量关闭
    如果可以,禁用法线和切线
    多套模型

检测报告解读

⭕️检查动画资源压缩方式Anim.Compression
    最佳压缩方式提高加载速率

⭕️设置PlayerSetting
    不涉及动画情况下,设置以下两个
    Vertex Compression
    OptimizeMeshData删除不必要的数据

⭕️检查FBX资源顶点数(可以忽略)

优化对比
包体大小不变
后期运行时,模型资源优化才是重点


3️⃣纹理的基础概念🔥🔥🔥

🚩Unity纹理的类型

Default
    默认的纹理类型格式

NormalMap
    法线贴图,可将颜色通道转换为适合实时法线贴图的格式

EditorGUI and LegacyGUI
    在编辑器GUI控件上使用的纹理

Sprite
    2D使用的Sprite或UGUI使用的纹理

Cursor
    鼠标光标

Cookie
    用于光照Cookie剪影类型的纹理

LightMap
    光照贴图纹理

SingleChannel
    原始图片只有单通道

🚩纹理大小
2的幂次方,1024,,52
Unity可以采用Bundle变体设置多套资源
⭕️通过Mipmap来限制不同平台、不同硬件来加载不同精度的贴图
纹理加载方式:TextureSteaming、稀疏纹理SparseTexture,VirtualTexture

增加细节贴图DetailMap或增加高反差来添加细节
在不降低视觉效果的情况下尽量减少贴图大小
通过SceneView-》DrawMode》MipMap查看
防止过采样(红色)和欠采样(蓝色)

🚩纹理颜色空间

⭕️默认大多数图像处理工具都会使用sRGB颜色空间处理和导出纹理,这时纹理选项的sRGB需要开启。
⭕️ 如金属度贴图、粗糙度贴图、或者法线贴图需要关闭,否则视觉错误表现

🚩纹理压缩
保持贴图视觉质量的同时,尽量减少纹理数据的大小
默认纹理原始格式是PNG或TGA
采用硬件支持的压缩方式
在这里插入图片描述

🚩纹理图集

优点
    采用共同纹理图集的多个静态网格资源可以静态合批处理,减少DrawCall调用
    纹理图集可以减少碎纹理过多,通过压缩降低纹理的内存成本和冗余数量

缺点
    美术合理规划模型,模型有相同着色器,或需要制作通道图去区分不同材质
    制作和修改成本较高

🚩纹理过滤

Trilinear	与 Bilinear 类似,但纹理也在不同的 MIP 级别之间模糊
Bilinear	纹理在靠近时变得模糊。
Point (no filter)	纹理在靠近时变为块状。

在这里插入图片描述

🚩纹理MipMap

⭕️逐级减低分辨率来保存纹理副本,相当于纹理LOD
优点
    GPU不需要远距离对对象全分辨率采样,提高性能
    解决了远距离下过采样导致噪点问题,提高渲染质量

缺点
    额外内存开销

🎁🌻🌼🌸 粉丝福利来喽 🎁🌻🌼🌸

  1. 免费领取海量资源 🎁
    简历自测评分表、Unity职级技能表、面试题库、入行学习路径等
  2. 《Unity游戏开发五天集训营 》50个名额 🎁
    我给大家争取到了 50个《游戏开发五天集训营 》名额,原价198,前50个免费
    扫码加入,暗号小听歌
    即可参加ARPG狼人战斗系统、饥荒生存类游戏开发、回合制RPG口袋妖怪游戏等游戏开发训练营
  3. 额外抽奖机会🎁
    参加游戏训练营、还有机会获得大厂老师在线面试指导、或者有机会获得价值1998元的《Unity极速入门与实战》课程
🔻🔻🔻🔻 扫下方二维码,获取游戏开发福利,暗号小听歌 🔻🔻🔻🔻

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

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

相关文章

C++智能指针

文章目录一、智能指针的目的和基本原理二、不带引用计数的智能指针2.1 auto_ptr2.2 scoped_ptr2.3 unique_ptr三、带引用计数的智能指针3.1 shared_ptr3.2 weak_ptr一、智能指针的目的和基本原理 一般new出来的对象会用普通指针引用,此时申请的堆上的资源需要我们手…

乐趣国学—品读《弟子规》中的“泛爱众”之道(上篇)

前言 “泛爱众”就是以广泛的爱心对待社会大众。人类生活是以爱心为纽带,没有爱心,人类生活就太痛苦不堪了。这个爱心从哪里来的?这个爱心就是孝心。孝道,正是培养爱心的第一步,一个连父母都不爱的人决不会真心爱他人&…

19.Feign 的工程化实例:eureka,ribbon,feign,hystrix(springcloud)

项目模型 项目结构 本实例创建model都是通过maven手动创建,依赖进行手动导入,好处是比使用springboot模板创建更加灵活,更方便的进行父子模块的管理。 1.创建父项目feign-project 2.对父项目feign-project的pom.xml,进行手动导入依…

Linux基础内容(10)—— 进程概念

目录 1.冯诺依曼体系结构 ​编辑1.冯诺依曼体系特点 2.cpu运算原理 3.数据传输 2.操作系统 1.操作系统管理的真相 2.操作系统与硬件的交互方式 3.操作系统与用户的交互方式 1.系统调用接口 2.用户对系统调用的使用 3.进程 1.进程的概念 2.Linux中的进程 3.与进程…

基于DJYOS的SPI驱动编写指导手册

1.贡献者列表 深圳市秦简计算机系统有限公司DJYOS驱动开发团队。 2.概述 DJYOS的DjyBus总线模型为IIC、SPI之类的器件提供统一的访问接口,SPIBUS模块是DjyBus模块的一个子模块,为SPI器件提供统一的编程接口,实现通信协议层与器件层的分离。…

Python 考试练习题 2

一、选择题 1、下列是 python 合法标识符的是( B)。 A. 2variable B. variable2 C. $anothervar D. if 2、在 python 中字符串的表示方式是(D )。 A.采用单引号包裹 B.采用双引号包裹 C.采用三重单引号包裹 D.ABC 都是 3、设有…

【浅学Linux】动态库与静态库的封装与使用

朋友们好,这里简单介绍一下LINUX学习中关于动态库与静态库的理解,以及站在封装和使用的角度去介绍是如何封装的?如何使用的? 文章目录一:动态库与静态库的理解二:静态库2.1:静态库的使用2.2&…

Sprite Editor

1、SpriteEditor SpriteEditor是精灵图片编辑器 它主要用于编辑2D游戏开发中使用的Sprite精灵图片 它可以用于编辑 图集中提取元素,设置精灵边框,设置九宫格,设置轴心(中心)点等等功能 2、Single图片编辑 Sprite Ed…

Docker原生网络、自定义网络、Docker容器通信、跨主机容器网络

Docker原生网络、自定义网络、Docker容器通信、跨主机容器网络Docker原生网络bridgeHostnoneDocker自定义网络自定义bridgeoverlaymacviandocker network所有基本命令Docker容器通信双冗余机制跨主机容器网络一些遗留错误解决错误1错误2错误3错误4Docker原生网络 docker安装时…

如何搭建node_exporter

如何搭建node_exporter 1.观看条件 1.假设你已经看过上一篇文章 《如何搭建普罗米修斯 Prometheus》 2.假设你已经会搭建普罗米修斯(promethus) 3.上面两个假设,只要满足一个。那你看这篇文章就没什么压力了 2.node_exporter是啥 node_…

UI自动化测试之selenium工具(浏览器窗口的切换)

目录 前言 方法 实例 ①示例1 ②示例2 附加知识 结语 前言 1、在浏览网页的时候,有时点击一个链接或者按钮,会弹出一个新的窗口。这类窗口也被称之为句柄(一个浏览器窗口的唯一标识符,通过句柄实现不同浏览器窗口之间的切…

C++Qt开发——文件操作

简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同。IO操作的本质是连续存储空间的数据读写。 1. IO设备的类型 顺序存取设备:只能从头开始顺序读写数据&#…

python游戏库pygame经典教程

目录 一.Pygame程序基本搭建过程 1.初始化化程序 2.创建Surface对象 3.事件监听 4.游戏循环 二.Pygame Display显示模块详解 1.将Surface对象粘贴至主窗口上 2.设置窗口主窗口 3.填充主窗口背景,参数值RGB 4.设置窗口标题 5.更新屏幕内容 6.pygame.display其他方…

C# VS2022 EF6 + Mysql8.0.31 CodeFirsts使用配置

文章目录环境安装Mysql8.0.31下载Mysql连接器Net版本安装VS2022创建工程添加Nuget包修改配置文件如下准备工作,创建一个Dbcontext类,代码如下打开程序包控制台输入命令第一步第二步第三步第四步简要介绍一下如何添加一个表思路添加User实体类修改dbconte…

NodeMcu arduino ESP8266 搭建mqtt服务(然也物联)以及使用

NodeMcu arduino ESP8266 搭建mqtt服务以及使用 本文章学习借鉴于太极创客团队,以表感谢。官网http://www.taichi-maker.com/ 操作步骤:我们注册然也物联平台,申请社区版本,进行测试。 文章目录NodeMcu arduino ESP8266 搭建mqtt…

【Python基础篇021】黏包现象丨udp的socket服务

🌠前言 基于udp的socket服务有什么特点?黏包现象是什么?又是如何产生的?udp和tcp哪种会有黏包现象?看完这篇文章相信你会有所收获。 目录 🌠一、基于udp的socket服务 🌠二、TCP中的黏包现象 …

保边滤波之引导滤波与领域转换滤波

(1)引导滤波 局部窗口内输出图像O和引导图像G成线性关系OiakGibk, ∀i∈Ωk 假设输出图像O和输入图像I之间的关系为OiIi−ni,噪声最小即最小化ni,即 每个像素点i包含于多个窗口Ωk,每个窗口都会得到一个a、b值&#…

RK3399平台开发系列讲解(I/O篇)Linux最大文件数的限制机制

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、Linux最大文件数的限制机制1.1、申请fd过程分析1.2、申请file内核对象过程分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在Linux上能打开多少个文件,有两种限制: 第一种:进程级…

十、组件(8)

本章概要 递归组件异步更新队列Teleport 10.11.2 递归组件 组件可以在自己的模板中递归调用自身,但这需要使用 name 选项为组件指定一个内部调用的名称。 当调用 Vue.createApp({}).component({})全局注册组件时,这个全局的 ID 会自动设置为该组件的n…

【云原生】Docker的基本使用方法与优势

🍬Docker的基本使用方法和优势🥙一、简介🥪二、优势🌮三、基本使用🥙一、简介 Docker是基于Go语言实现的开源应用容器引擎,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的应…