4. 场景搭建资源管理:模型导入规范、贴图格式要求、材质球设置、资源打包
资源管理这事儿,说大不大,说小不小。我见过太多项目,场景搭得挺漂亮,一运行就卡成幻灯片。查到最后,问题全出在资源管理上。说白了,就是模型、贴图、材质球这些基础东西没管好。
今天咱们就聊聊这块。我个人习惯是把资源管理分成四个环节:模型怎么导进来、贴图用什么格式、材质球怎么调、最后怎么打包出去。一环扣一环,哪个环节出问题,后面都得跟着遭殃。
4.1 模型导入规范
模型导入,看着简单,其实门道不少。我记得刚入行那会儿,从网上下载了一个精美的雕像模型,直接拖进引擎。结果呢?面数三百多万,场景直接卡死。嗯,从那以后我学乖了。
模型导入前,先问自己三个问题:
- 面数控制了吗? 移动端单模型别超过 3000 面,PC 端也别超过 15000 面。我一般习惯在建模软件里先减面,再导出。
- 单位统一了吗? 引擎里用厘米,建模软件也得用厘米。不然导进来一个模型,要么大得像山,要么小得像蚂蚁。
- 坐标归零了吗? 模型原点最好在世界坐标中心。不然你摆场景的时候,位置怎么调都不对。
我个人推荐的导出设置:
- 格式:FBX(通用性最好)
- 勾选「嵌入媒体」
- 动画:如果不需要,别勾选,省体积
- 平滑组:保留,不然模型看起来棱角分明
还有一点,模型命名。别用什么「untitled_001」这种名字。我见过一个项目,几百个模型全是默认名,后期想找某个部件,得一个一个点开看。你说崩溃不崩溃?
4.2 贴图格式要求
贴图这块,坑更多。你想想看,一张 4K 的贴图,加载起来得多慢?我做过一个测试,同样一张贴图,4K 和 2K 在手机上加载速度差了将近三倍。
贴图格式怎么选?我列个表,你一看就明白:
| 用途 | 推荐格式 | 说明 |
|---|---|---|
| 颜色贴图(漫反射) | PNG / JPG | PNG 支持透明通道,JPG 体积更小 |
| 法线贴图 | PNG(压缩格式) | 别用 JPG,压缩会破坏法线信息 |
| 粗糙度/金属度 | PNG(灰度图) | 单通道即可,别用 RGB 浪费空间 |
| 发光贴图 | PNG | 注意控制亮度范围 |
我曾经踩过的坑:
有一次项目上线前,发现某个场景的墙面贴图在手机上显示偏色。查了半天,原来是贴图用了 sRGB 色彩空间,而引擎里设置成了线性空间。颜色直接翻车。所以记住:颜色贴图用 sRGB,法线、粗糙度这类数据贴图用线性。
贴图尺寸也有讲究。我建议遵循「2 的幂次方」原则:256、512、1024、2048。为什么?因为 GPU 对这类尺寸处理效率最高。你弄个 1000x1000 的贴图,虽然也能用,但性能上会打折扣。
4.3 材质球设置
材质球,说白了就是给模型「穿衣服」。衣服穿对了,模型才好看。穿错了,再好的模型也白搭。
我一般把材质球分成三类:
- 标准材质: 最常用,适合 90% 的场景。调一下基础颜色、粗糙度、金属度就行。
- 透明材质: 比如玻璃、水面。注意渲染顺序,不然会出现半透明物体遮挡错误。
- 自发光材质: 比如灯管、霓虹灯。别把亮度调太高,不然场景会过曝。
我的小技巧:
材质球命名和模型命名保持一致。比如模型叫「Wall_Brick_01」,材质球就叫「Mat_Wall_Brick_01」。这样后期修改的时候,一眼就能找到对应关系。
还有一个容易忽略的点——材质球的实例化。同一个材质球,如果多个模型共用,一定要用实例(Instance)。不然你改一个参数,引擎会复制一份材质,内存直接翻倍。我见过一个项目,就因为没做实例化,内存占用多了 200MB。
4.4 资源打包
资源打包,是最后一步,也是最容易出问题的一步。你想想看,所有资源都准备好了,结果打包出来要么缺贴图,要么模型变形,多闹心。
打包前,我习惯做这几件事:
- 检查资源引用: 有没有模型引用了不存在的贴图?有没有材质球丢失了参数?
- 清理无用资源: 项目里经常会有一些测试用的模型、贴图,打包前全部删掉。不然白白增加包体。
- 设置压缩格式: 移动端用 ETC2 或 ASTC,PC 端用 DXT。别用未压缩的格式,不然包体大得吓人。
打包后的自检清单:
- ✅ 所有模型显示正常,没有丢失材质
- ✅ 贴图清晰度符合预期,没有模糊或锯齿
- ✅ 场景帧率稳定,没有明显卡顿
- ✅ 包体大小在目标范围内
我记得有一次,打包完发现场景里有一面墙是紫色的。紫色在引擎里代表「材质丢失」。查了半天,原来是那个材质球引用的贴图路径是绝对路径,打包后路径变了,自然就找不到了。从那以后,我所有资源都用相对路径,再也没出过这种问题。
资源管理这件事,说白了就是「规范」二字。前期多花十分钟规范一下,后期能省十个小时的排查时间。你想想看,是不是这个理?