在Unity中管理材质
创始人
2024-05-24 01:13:02
0

Shader和Material的关系

    Shader能够设置游戏物体的颜色或者能够通过材质来配置颜色。实际上,一个shader能够让许多物体看起来像是完全不同的物质。

    Shader和材质作为一个整体工作:Shader定义了表面看起来可以像哪些东西,材质让表面真正看起来是哪一个具体的东西。

修正紫红色的材质

    当我们从一个项目导入资源到当前项目时,有时会出现两个项目的渲染管线不匹配的情况,此时shader也是不匹配的。当某个材质使用的shader和当前渲染管线不匹配时,Unity Editor会使用明亮的紫红色来做警告提示,如下图所示。


    上图例子的工程时URP,为了修复紫红色柠檬的问题,我们先选中这个游戏物体,在其Inspector面板中,可以看到其材质的shader被设置为了Standard。在Unity中,如果shader的名字为Standard,则其基本就是Built-in渲染管线的Standard Shader,这种shader在URP工程中是无法正常工作的。我们需要将其改成一个URP shader来修复这个问题。

    在Shader下来菜单中,选择Universal Render Pipeline -> Lit,随后我们可以看到问题被修复了。


    上面所说的方法仅仅是最简单的一种修复材质错误的方法,但是还有其他很多错误材质的问题并没有这么简单就可以修复。

URP自动材质升级

    URP有一个built-in工具来自动转换问题材质。其步骤如下:

    1. Unity Editor的主菜单中,选择 Edit -> Render Pipeline -> Universal Render Pipeline -> Upgrade Project Materials to UniversalIRP Materials。

    2. 做完第一步后,由于这个选项会修改工程文件,会有一个弹窗提示确认你是否已经备份过项目了。确认后选择Proceed就可以了。

URP项目游戏物体的默认材质

    在URP项目中,添加一个Sphere到场景中,我们可以看到,它有一个默认材质Lit。


    点击Lit,在其Inspector面板中可以看到,它对应的shader是Universal Render Pipeline/Lit Shader。


    我们还可以看到,默认材质的Inspector中的所有东西都是灰的,表明其相关shader和属性在Editor中是无法修改的(但可以通过代码来修改)。

在项目窗口中查找材质

    当我们导入了不同资源到项目中后,如何能快速查找项目中的所有材质呢?

    首先在项目窗口中点击下图的图标,选择“Two Colume layout”

    


    然后在搜索框里输入t:Material(t表示type,例如想搜索所有脚本,就使用t:Script):


    如果想要搜索带关键字的材质,则再加上关键字即可,如下图会搜索名字里有red的材质:


应用材质到游戏物体上

    在场景中选择游戏物体,查看Inspector面板,在Mesh Renderer组件中的Materials下,可以进行材质的选择。


    当然,也可以拖动项目窗口中想要应用的材质到场景中的某个游戏物体上。

    一个材质可以应用到多个游戏物体上,当我们修改材质的属性时,所有使用这个材质的游戏物体都会发生变化。由于材质是整个项目范围内都能看到的,因此即使不同场景的不同游戏物体,只要它们使用同一个材质,材质属性改变后,这些游戏物体也都会变化。

创建材质

    一般在Unity项目中,我们会创建一个叫做Materials的目录或类似的目录来管理存放材质。下面的例子会以Materials目录名为例,来看材质的创建过程。

    首先,我们在场景中新增一个Cube


    然后在项目窗口中,找到Materials目录,点击后,在这个目录下点击右键,选择Create->Material:


    命名这个材质名为CubeMaterial,然后在Inspctor里调整一下相关属性,最后应用这个材质到前面创建的Cube游戏物体上。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...