3.8.3如何动态切换builtin-unlit材质的Main Texure?

我创建了一个3D Quad几何体,想动态改变贴在这个正方形上的材质的贴图。
材质的Effect是builtin-unlit。
以下代码报错 illegal property name: Main Texture.

        const _render = this.node.parent.getComponent(MeshRenderer);
        const mtl = _render.material;
        resources.load("db://assets/resources/textures/adventurer-run3-00.png", Texture2D, (err, tex) => {
            mtl.setProperty("Main Texture", tex);
        })

或者请问有什么其他方法能实现?

1赞

你的property name都写错了,当然没法设置了。
mtl.setProperty(“mainTexture”, tex);

该property具体的名字,你应该查看对应的effect文件。
比如以内置的standard.effect文件为例
在你用到的那个pass下对应的properties字段里,就有mainTexture,对应的显示在Editor上的属性检查器里的,叫做AlbedoMap,反射贴图,也就是俗称的物体的纹理

楼上正解。材质面板上显示的内容是会自动加上首字母大写和单词之间的空格的。实际的名称不一样。