c# - 如何从脚本更改着色器的 "BaseMap"属性? - 通用RP模板

标签 c# unity3d

我曾经使用统一的标准 3D 项目更改 BaseMap 纹理,如下所示:

[SerializeField] private Texture texture;

void Start()
{
    this.GetComponent<Renderer>().material.mainTexture = texture;
}

但是,相同的代码似乎无法使用通用 RP 模板。当我检查着色器属性时,它显示 BaseMap 属性已过时,如下图所示:

Shader Obsolete Properties

但是当我在运行时将纹理拖放到 BaseMap 时,它会起作用。我想这意味着它应该工作。 (下图):

BaseMap Texture change at runtime

我现在的主要问题是,如何从Universal RP Template 中的脚本更改BaseMap 纹理?

除了 BaseMap 之外,还有其他属性我应该调用并更改它们的纹理吗,因为它写在着色器上 BaseMap 是“ObsoletProperties”?

最佳答案

更新,这应该可以解决问题:

[SerializeField] private Texture texture;

void Start()
{
    GetComponent<Renderer>().material.SetTexture("_BaseMap", texture);
}

关于c# - 如何从脚本更改着色器的 "BaseMap"属性? - 通用RP模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57866803/

相关文章:

c# - 按属性对对象列表进行排序 C#

c# - 将 .NET 4 线程转换为 .NET 2

c# - 不在大厅时使用 LoadBalancingClient 轮询可用的 Unity Photon 房间?

c# - 等待事物但使事物以并发方式运行

c# - 如何检查我的数组中是否有重复值?

c# - Unity 处理多个具有不同目的的碰撞器

android - 适用于Android的Unity构建因Gradle错误而失败

c# - 使用NAudio在Unity中创建AudioClip,在读取数据时卡住1-2秒

C# webBrowser控件如何获取鼠标指针下的数据

c# - DataContractSerializer 与 BinaryFormatter 性能对比