nameID | 属性名称 ID,使用 Shader.PropertyToID 获取。 |
name | 属性名称。例如,内置渲染管线中的“_Color”,URP 中的“_BaseColor”。 |
value | 要设置的颜色值。 |
设置颜色值。
许多着色器使用不止一种颜色。使用 SetColor 更改颜色(通过着色器属性名称或唯一的属性名称 ID 标识)。
在使用标准着色器设置材质上的颜色值时,您应该注意,您可能需要使用 EnableKeyword 来启用之前未使用的着色器功能。有关详细信息,请阅读 通过脚本访问材质。
颜色属性名称在着色器代码的 Properties
部分中定义。以下是 Unity 预制着色器中颜色属性的示例
_Color
:材质的主要颜色(URP:_BaseColor
)。您可以通过 color 属性访问此着色器属性。
_EmissionColor
:材质的发光颜色。
其他资源:color、GetColor、Shader.PropertyToID、着色器程序中的属性。
//Attach this script to any GameObject in your scene to spawn a cube and change the material color using UnityEngine;
public class Example : MonoBehaviour { void Start() { // Create a new cube primitive to set the color on GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
// Get the Renderer component from the new cube var cubeRenderer = cube.GetComponent<Renderer>();
// Use SetColor to set the main color shader property cubeRenderer.material.SetColor("_Color", Color.red); // If your project uses URP, uncomment the following line and use it instead of the previous line // cubeRenderer.material.SetColor("_BaseColor", Color.red); } }