Unity3D/Unity & C#
Unity & C# ~ Lightmap 교체
캬캬백곰
2025. 3. 19. 21:05
728x90
public float powerOutageDuration = 3f;
// 직렬화
[Serializable]
public class LightMapClone
{
public Texture2D _dir;
public Texture2D _light;
public Texture2D _shadow;
}
public LightMapClone[] _lightmaps;
private LightmapData[] savedLightMaps;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
StartCoroutine(SimulatePowerOutage());
}
}
private IEnumerator SimulatePowerOutage()
{
LightmapData[] lightmapData = new LightmapData[_lightmaps.Length];
for(int i=0; i < _lightmaps.Length; i++)
{
lightmapData[i] = new LightmapData();
lightmapData[i].lightmapDir = _lightmaps[i]._dir;
lightmapData[i].lightmapColor = _lightmaps[i]._light;
lightmapData[i].shadowMask = _lightmaps[i]._shadow;
}
// 라이트맵 교체
savedLightMaps = LightmapSettings.lightmaps.ToArray();
LightmapSettings.lightmapsMode = LightmapsMode.NonDirectional;
LightmapSettings.lightmaps = lightmapData;
// 기다림
yield return new WaitForSeconds(powerOutageDuration);
// 라이트맵 복원
LightmapSettings.lightmapsMode = LightmapsMode.CombinedDirectional;
LightmapSettings.lightmaps = savedLightMaps.ToArray();
}
728x90
반응형