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
반응형
'Unity3D > Unity & C#' 카테고리의 다른 글
Unity & C# ~ Object Pool (0) | 2024.10.19 |
---|---|
Unity & C# ~ 시간을 나타내는 법(float to string) (0) | 2023.11.03 |
Unity & C# ~ 한/영 전환 하는 클래스 (0) | 2023.06.29 |
Unity & C# ~ 이미지 파일을 로드하여 스프라이트로 만들기 (Image file Load to Sprite) (0) | 2023.03.14 |
Unity & C# ~ JsonConvert 사용법 (0) | 2023.02.24 |