Unity3D通過代碼控制場景效果跟隨時間和天氣來變化

開發一個天氣系統第一部分,場景在晴天的時候,跟隨時間的變化而進行變化,可以選擇跟隨系統時間而變化,也可以固定爲一種效果,由用戶手動選擇喜愛的場景效果。

實現這個功能,需要控制的元素有:天空盒、光照資源、環境光顏色。

 本人環境: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)天氣變化製作,重點是對資源的替換,直接對地形和資源文件通過代碼動態替換即可,雨天和雪天的效果,是將粒子文件在相機鏡頭前呈現,效果如下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章