unity3d - 如何通过 URP 脚本设置着色器图形材质的纹理
问题描述
我正在尝试设置着色器图形材料的纹理并且没有运气。在遵循一些教程和一些谷歌搜索之后,我似乎无法让它工作。
到目前为止,我已经使用通过代码生成的平面和预构建的平面设置了我的场景,并将材料应用于这两者。然后我创建了一个脚本来将 MeshRenderer 的纹理设置为“_MainTex”,正如我在谷歌搜索时多次看到的那样。我还将材质纹理属性设置为“_MainTex”。
我也尝试了参考名称,但这也没有用。
那么如何通过代码使用 Universal Render Pipeline 设置着色器图形材质的纹理呢?
游戏中的两架飞机:
预制飞机的检查员:
着色器图:
剧本:
void Start()
{
GetComponent<MeshRenderer>().material.SetTexture("_MainTex", new TextureGenerator().GenerateNoiseTexture(256, 256));
}
解决方案
您需要为此属性填写“参考”部分。
它位于 Graph Inspector -> Node Settings 中。(通常在 ShaderGraph 的右上角)
请务必在此处将“Texture2D_234E865”更改为“_MainTex”。通过单击着色器并查看检查器来验证保存的资产。在属性下它应该列出 _MainTex。然后你可以使用你的SetTexture代码或者简单地调用material.mainTexture,它做同样的事情。
推荐阅读
- php - PDO 中的错误匹配日期
- mysql - MySQL 交叉表查询,动态显示当前周和过去 12 周
- c# - 如何模拟我的电脑没有 USB 端口
- ruby - 如果通过 Window 的命令提示符或 Linux 的终端启动 Ruby "File.open" 将不起作用(无错误)
- mongodb - 复杂查询 mongoose - 嵌入式文档数组
- javascript - 使用Javascript循环遍历数组的对象
- javascript - Javascript Json:通过匹配json键对值求和
- c# - 将对象列表传递给控制器(C# MVC)
- netsuite - 如何在 NetSuite SuiteScript 中检查字段是否具有内容/值
- javascript - 使用 iframe 显示注入的内容