首页 > 解决方案 > 如何通过 URP 脚本设置着色器图形材质的纹理

问题描述

我正在尝试设置着色器图形材料的纹理并且没有运气。在遵循一些教程和一些谷歌搜索之后,我似乎无法让它工作。

到目前为止,我已经使用通过代码生成的平面和预构建的平面设置了我的场景,并将材料应用于这两者。然后我创建了一个脚本来将 MeshRenderer 的纹理设置为“_MainTex”,正如我在谷歌搜索时多次看到的那样。我还将材质纹理属性设置为“_MainTex”。

我也尝试了参考名称,但这也没有用。

那么如何通过代码使用 Universal Render Pipeline 设置着色器图形材质的纹理呢?

游戏中的两架飞机:

两架飞机

预制飞机的检查员:

预制飞机的检查员

着色器图:

着色器图

剧本:

void Start()
{
    GetComponent<MeshRenderer>().material.SetTexture("_MainTex", new TextureGenerator().GenerateNoiseTexture(256, 256));
}

标签: unity3d

解决方案


您需要为此属性填写“参考”部分。

它位于 Graph Inspector -> Node Settings 中。(通常在 ShaderGraph 的右上角)

请务必在此处将“Texture2D_234E865”更改为“_MainTex”。通过单击着色器并查看检查器来验证保存的资产。在属性下它应该列出 _MainTex。然后你可以使用你的SetTexture代码或者简单地调用material.mainTexture,它做同样的事情。


推荐阅读