unity为什么有的shader材质不能一键转换为默认支持URP的shader |
您所在的位置:网站首页 › 洋红色是紫色吗 › unity为什么有的shader材质不能一键转换为默认支持URP的shader |
在unity项目中切换为URP之后,可能大部分材质都会变成粉色(错误状态),这时候我们可以点击Edit-Render Pipeline-Universal Render Pipeline下的选项来进行自动转换为支持URP的材质,但是有的时候会出现 “xxx material was not upgraded. There's no upgrader to convert xxxx shader to selected pipeline UnityEditor.Rendering.Universal.UniversalRenderPipelineMaterialUpgrader:UpgradeSelectedMaterials() (at Library/PackageCache/[email protected]/Editor/UniversalRenderPipelineMaterialUpgrader.cs:37)” 这是因为现在unity还不支持将一些自定义的shader文件一键转换为支持URP的shader文件,具体情况可以通过代码来了解。 在我们点击自动转换的选项之后,会在UniversalRenderPipelineMaterialUpgrader脚本中执行UpgradeSelectedMaterials函数: 在UpgradeSelectedMaterials函数中调用了脚本中的GetUpgraders函数: 重点就在这个函数,可以看到这个函数只把unity原本一些自带的shader添加进了upgraders变量中,所以在我们之后会调用UpgradeSelection,然后调用Upgrade函数,之后在Upgrade内部执行GetUpgrader函数时会进行一层判断 如果在upgraders变量中都找不到与要转换shader对应的名字,那么会返回null,就会出现文章开头的提示。 所以说目前unity还是只可以自动转换其自己的标准着色器。还是建议手动进行转换。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |