开发一个天气系统第一部分,场景在晴天的时候,跟随时间的变化而进行变化,可以选择跟随系统时间而变化,也可以固定为一种效果,由用户手动选择喜爱的场景效果。
实现这个功能,需要控制的元素有:天空盒、光照资源、环境光颜色。
本人环境:unity2018.1.f1 发布平台:pc
(1)天空盒的替换,一行代码;
RenderSettings.skybox = morningSky; //morningSky为自己的天空盒的材质球
如果不想新建太多材质,也可以动态替换材质球的Cubemap,看个人喜好。
(2)环境光的颜色修改,一行代码;
RenderSettings.ambientSkyColor = new Color(255 / 255f, 255 / 255f, 255 / 255f, 1);
(3)灯光效果无法通过自动烘焙完成,可以直接通过代码修改灯泡下的反射球的纹理贴图文件,就能将天空盒的光效应用到场景中了;
currLight.transform.Find("Reflection Probe").GetComponent<ReflectionProbe>().
customBakedTexture = snowTex;
因为灯光一直用的同一个光源文件,所以不得不通过代码来替换,需要将Reflection Probe的Type修改为Custom
替换的文件则为箭头指向的位置。
(4)天气变化制作,重点是对资源的替换,直接对地形和资源文件通过代码动态替换即可,雨天和雪天的效果,是将粒子文件在相机镜头前呈现,效果如下。