unity動態改變自發光
阿新 • • 發佈:2019-02-20
unity5.0很早以前可以動態改自發光
也就是自發光對GI有影響
不過很少有人注意到這點
主要是在動態和靜態上也存在不同的情況
有時候用處還是很明顯的
下面是在unity5.5上做的測試
首先 作為自發光的物體必須是靜態的,
其次材質的emission必須放上圖片或者有顏色
然後烘焙和實時分為三種情況
而且emission下有三個選項,none就是自發光不管在哪個模式下都不對全域性光產生影響
realtime就是在實時的情況下可以通過程式碼DynamicGI.UpdateMaterials來調整自發光的亮度或者顏色等等
baked當然也能通過程式碼調整,但必須是隻開了pre的情況下才行,如果既開了pre又開了baked,那麼只有設定成realtime才能的才能改變
如果場景只設置了baked,只有烘焙效果,並不能有實時效果
當然兩個都沒有的話,就沒有烘焙效果和實時效果了
下面是控制程式碼
using System.Collections; using System.Collections.Generic; using UnityEngine; public class UpdataGI : MonoBehaviour { float tempTime = 0.001f; void Update () { if (tempTime < 1) tempTime += 0.001f; else tempTime = 0; this.gameObject.GetComponent<Renderer>().material.SetColor("_EmissionColor", Color.HSVToRGB(tempTime, 1,2)); DynamicGI.UpdateMaterials(this.gameObject.GetComponent<Renderer>()); } }
圖片效果比較像面光源
下面可以用setTexture方式賦值來控制自發光
注意使用的是_EmissionMap
_Color _MainTex _Cutoff _Glossiness _Metallic _MetallicGlossMap _BumpScale _BumpMap _Parallax _ParallaxMap _OcclusionStrength _OcclusionMap _EmissionColor _EmissionMap _DetailMask _DetailAlbedoMap _DetailNormalMapScale _DetailNormalMap _UVSec _EmissionScaleUI _EmissionColorUI _Mode _SrcBlend _DstBlend _ZWrite