运行时修改HDRP Lit材质自发光属性未生效问题咨询
HDRP Lit材质自发光修改不生效的原因及解决方案
核心问题排查点
- 确认代码执行正常:检查脚本挂载的GameObject处于激活状态,Start函数正常触发,可以在循环内添加Debug输出验证逻辑执行到了对应分支。
- 确认原始材质的自发光开关已开启:编辑器中打开你使用的HDRP Lit材质,找到Emission选项,确保左侧的勾选框处于勾选状态。如果需要动态通过代码开启,需要额外设置启用属性和对应关键字。
- 属性名确认:HDRP管线的Lit材质自发光颜色正确属性名为
_EmissiveColor,你代码中使用的属性名是正确的,之前尝试的_EmissionColor是内置渲染管线/URP管线的属性名,不适用于HDRP。 - 材质实例逻辑正常:你调用
.material获取的就是实例化材质,显示为(Instance)属于正常行为,不是故障原因。 - 排除后处理干扰:如果场景开启了自动曝光等后处理效果,可能会把低强度的自发光效果压得几乎不可见,可以先把自发光强度乘数调整到10以上测试是否有变化。
修复后的参考代码
如果你需要代码完整控制自发光的启用和颜色修改,可以用以下写法:
public GameObject[] myGOs; private void Start () { for(int i = 0; i<myGOs.Length; i++){ Material mat = myGOs[i].GetComponent<Renderer>().material; // 启用自发光开关 mat.SetFloat("_EmissiveIntensity", 1f); mat.EnableKeyword("_EMISSION"); // 设置自发光颜色,乘数可根据实际需求调整 mat.SetColor("_EmissiveColor", new Vector4(0.8196f,0.783f,0,1) * 10f); } }
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

