如何在运行时在 Unity 中设置贴图(除了反照率、法线和金属贴图)?

How to set maps (apart from albedo, normal and metallic) at runtime in Unity?

我正在尝试为我的游戏对象动态设置纹理。 它是这样工作的:

        var skin = _skinTable[index] as Hashtable;
        var renderer = CurrentShip.GetComponentInChildren<Renderer>();

        renderer.material.SetTexture("_MainTex", skin["albedo"] as Texture);
        renderer.material.SetTexture("_BumpMap", skin["normal"] as Texture);
        renderer.material.SetTexture("_MetallicGlossMap", skin["metallic"] as Texture);

我在哪里可以找到其他贴图的名称(SetTexture 的第一个参数),例如高度、遮挡等? (我说的是标准着色器)

如果您 select 在检查器中

您的着色器,您可以获得可用的贴图通道

对于完整的标准着色器,您可以查看源代码 https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Standard.shader