🔥Unity 导入素材为粉色?我用一个插件轻松解决

哈喽大家好哇!我是跳入西湖,最近在做 John Lemon 项目,学学游戏开发

在导入相关的素材时,发现角色是粉色的(其实是洋红色),一开始我还以为就是这样的,直到我后来创建一个地图场景放到游戏中时,发现场景也几乎是粉色的 我说这怎么可能是正常嘛?虽然我之前没做过游戏,但是咱也不是傻子,这肯定是什么地方出了问题。

啥地方出了问题?

经过搜索、验证,终于知道了这个问题是渲染管道不匹配引起的。

导入的素材用的是 「通用渲染管线 Universal Render Pipeline, URP」,而我项目里默认配置的是「内置渲染管线」,如图:

(其实我也不知道怎么看导入的素材是什么渲染管线,搜了一圈没搜到。只是升级为 URP 后问题解决了,所以我推断是这个原因😊,如果有大佬知道还请指点我一下,感激不尽)

等等?什么是渲染管线?

抛开数学公式和图像原理,渲染管线主要是干了一件事:把 3D 的数据变成一个个二维图像。因为

它解决的是「图形渲染」的问题。所以渲染管线不匹配,那么素材就不能正常的渲染到屏幕上,于是呈现粉色。 更多的基础知识放后面讲哈,现在先把渲染管线改了,步骤如下:

1. 安装 URP

2. 创建渲染管道资源文件

3. 设置渲染管道

给「可编辑渲染管线」设置新的管道资源

【可选】身体还是粉色?

一般来说,设置了 URP 后应该是正常了,但是我当时设置完了以后呢,玩家角色的衣服正常了,身体还是粉色的,当时的图找不到了,差不多跟下面一样:

这个是材质丢失的问题,重新设置一下就行,步骤:

  1. 先在 Models 中找到这个角色
  1. Inspector 中找到材质的设置

toon: n.动画角色,指动画片、漫画书等中的虚构角色。

  1. 设置 JohnToon 为 JohnToonShaded ,选择 Apply 即可

至此,粉色应该都没了,是正常的颜色。


背后的知识

渲染管线

在 John Lemon这个 3D 游戏中,我们添加的环境和角色都是 3D 空间下的,而我们的屏幕是 2D 的,3D 数据必然要转化成 2D 图像,这其中转换的工作,就交给「渲染管线」来做。

目前官方文档上描述的渲染管线有 4 种:

  1. 内置渲染管线是 Unity 的默认渲染管线。这是通用的渲染管线,能在所有平台上运行,但是不容易定制,同时效率也不是最好的
  2. 通用渲染管线 (URP) ,本文主角,大大优化了性能,所以是移动、网络和 VR 项目的理想选择,配置也比较复杂。
  3. 高清渲染管线 (HDRP) 是一种为高端平台设计的渲染管线,可让您在高端平台上(游戏机或者游戏电脑)创建出色的高保真图形。配置复杂,只能由老司机才能使用。
  4. 自定义渲染管线

CPU 和 GPU 通力合作渲染图像,CPU不断地把数据丢给 GPU,GPU 如同工厂一样调用一个个计算单元(工人)对数据进行简单处理,最后产出产品------ 图像。分为以下几个步骤:

  1. 应用阶段:这是 CPU 负责的阶段,它传给GPU 的数据一般是场景灯光、模型、摄像机位置。传之前会对这些数据进行处理,比如把摄像机照不到的地方剔除(culling),避免过度渲染,还会告知 GPU 这些数据的渲染状态(纹理、材质和着色器)。

    拿实际的工厂做类比,这个阶段相当于工厂的进货部门,采购员 CPU挑选材料,把材料和对应的加工方法丢给工厂的生产车间 GPU。

  2. 投影变换阶段:这是 GPU 负责的阶段。也就是渲染管线的部分,这一步要做的事情有------顶点着色器,模型转换与相机转换,坐标变换,逐顶点色彩信息处理,曲面细分着色器,几何着色器,投影,裁剪,屏幕映射。这时,把 3D 的数据转换成了屏幕上的三角形。

  3. 光栅化阶段,把投影变换阶段获取到的三角形的顶点数据,转化成片元(就是带有深度信息的像素)

  4. 着色阶段:求物体表面在光照下的光影效果

参考资料

解决洋红色问题的教程

Unity 渲染管线文档

Unity Materials 选项卡文档介绍

初识渲染管线,这文章写得好,简明扼要

相关推荐
LeeAt19 小时前
《谁杀死了比尔?》:使用Trae完成的一个推理游戏项目!!
前端·游戏开发·trae
龙智DevSecOps解决方案20 小时前
游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
ci/cd·游戏开发·jetbrains·teamcity
一名用户1 天前
unity实现自定义粒子系统
c#·unity3d·游戏开发
技术小甜甜3 天前
【Blender Texture】【游戏开发】高质感 Blender 4K 材质资源推荐合集 —— 提升场景真实感与美术表现力
blender·游戏开发·材质·texture
Thomas游戏开发4 天前
Unity3D TextMeshPro终极使用指南
前端·unity3d·游戏开发
Thomas游戏开发5 天前
Unity3D 逻辑代码性能优化策略
前端框架·unity3d·游戏开发
Thomas游戏开发6 天前
Unity3D HUD高性能优化方案
前端框架·unity3d·游戏开发
陈哥聊测试7 天前
游戏公司如何同时管好上百个游戏项目?
游戏·程序员·游戏开发
一名用户8 天前
unity随机生成未知符号教程
c#·unity3d·游戏开发
Be_Somebody12 天前
计算机图形学——Games101深度解析_第二章
游戏开发·计算机图形学·games101