最近工作需求,由于项目加载机制问题,导致Unity场景中的环境设置(即Lighting页签设置)需要在进入场景时进行重载。
大多数的参数通过赋值到RenderSettings即可处理,包括但不限于雾效模块相关参数、AmbientColor等。这里RenderSettings.skybox也是可以重载的,并且可以生效。
部分参数需要在设置完之后额外执行一步DynamicGI.UpdateEnvironment去生成新的信息(猜测是球谐信息需要重构)
对于Reflection Probe信息来说,需要在ProjectSetting - Quality选项卡中打开对应质量级的Realtime Reflection Probes才可以在runtime时更新Reflection Probe信息
但是unity_SpecCube0这个参数很特殊。如果Reflection Source选择是Skybox,这个参数实际上是skybox预烘焙的结果。如果在runtime时更换skybox,unity_SpecCube0的数据可能为纯黑或者不变,DynamicGI.UpdateEnvironment也不会更新该数据(不会重新烘焙skybox)。如果需要Runtime更新来源是skybox的reflection,需要自行使用Reflection Probe烘焙该skybox下的结果,然后在runtime的时候把defaultReflectionMode选为Custom模式并将烘焙结果使用Custom模式挂载
- 作者:Reguluz
- 链接:https://reguluz.site/article/f2d5e985-f12f-4b06-bbba-fa079e968981
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章