最近工作需求,由于项目加载机制问题,导致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模式挂载
 
C# unsafe code (1)Shader平台编译的大小写敏感