開發一個天氣系統第一部分,場景在晴天的時候,跟隨時間的變化而進行變化,可以選擇跟隨系統時間而變化,也可以固定爲一種效果,由用戶手動選擇喜愛的場景效果。
實現這個功能,需要控制的元素有:天空盒、光照資源、環境光顏色。
本人環境: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)天氣變化製作,重點是對資源的替換,直接對地形和資源文件通過代碼動態替換即可,雨天和雪天的效果,是將粒子文件在相機鏡頭前呈現,效果如下。