我正在使用 Unity 2020.1.3f1 的 URP,以及新的 2D 渲染器系统。截至目前,我的对象在内置的“Sprite-Lit-Default”材质和具有自定义构建的像素轮廓着色器的材质之间发生变化,详细信息如下:https ://danielilett.com/2020-04-27- tut5-6-urp-2d-大纲/
这很好用,但我最近在我的精灵中添加了灯光和法线贴图,作为导入设置中的辅助纹理。默认光照纹理在显示法线贴图时没有问题,但是当我尝试修改我的着色器图以包含法线贴图时,它不会像精灵纹理那样在 _MainTex 设置为参考时导入。
我试过 _NormalMap(这是导入器中二级纹理的名称!)以及 _NormalTex,但它总是最终不导入法线贴图。我什至尝试将 _MainTex 更改为 Texture2D,但鉴于这不断引发错误,我认为这不是正确的方法。(这个要具体。)
Error assigning 2D texture to 2DArray texture property '_MainTex': Dimensions must match
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()
我在这里错过了什么吗?我可以在网上找到的所有教程都只显示人们通过检查器将法线贴图拖入,但这种材料将被许多不同的精灵使用,所以这似乎......违反直觉。
最重要的是,默认材质/着色器对此没有任何问题,所以我觉得我要么遗漏了一些东西,要么我最终不得不对我的精灵进行编码以通过代码而不是动画师来更改材质,只是为了这个小而烦人的怪癖..
(编辑)因此,对于遇到相同问题的其他任何人,对此进行更新。我设法找到了shadergraph文档的一部分,这似乎是唯一谈论这个的部分:
需要将 MainTex 的引用命名为 _MainTex 来渲染 Sprite。还建议将 Mask 的引用命名为 _MaskTex,将 Normal 命名为 _NormalMap,以匹配此包中使用的 Shader 输入。
所以从我收集到的信息来看,_MainTex 是 ShaderGraph 中唯一自动的。经过一整天的查找教程后,我注意到它们中的每一个都只是将法线贴图和额外纹理设置为默认纹理,因此无需手动分配它们就可以显示出来。
我认为这可以通过手写着色器实现,但我决定在手绘精灵轮廓上使用简单的无光照着色图,显示在主对象的单独游戏对象上。我不会将此作为答案发布,以防其他人将来找到解决方案,因为这不是......在我看来真的是一个解决方案。