2024-07-25

전역 조명을 조절하기 위해 URP 의 Light 2D - Global Light 를 사용했다.
스크립트를 통해 시간의 흐름에 따라 Intensity 속성을 조절하여
밝기 조절을 하려고 한다.
Color 속성을 통해 붉은 노을이나 푸르스름한 새벽을 표현할 수도 있지만,
마을 맵의 전반적인 분위기와 맞지 않아 기본 흰색으로 통일하였다.
using UnityEngine;
using UnityEngine.Rendering.Universal;
using System;
public class Sun : MonoBehaviour
{
[SerializeField] private Light2D sunlight;
[SerializeField] private float nightIntensity;
[SerializeField] private float dayIntensity;
public AnimationCurve dayNightCurve;
public Action OnDateTimeChanged;
private void OnEnable()
{
ClockSystem.OnTimeChanged += UpdateLight;
}
private void OnDisable()
{
ClockSystem.OnTimeChanged -= UpdateLight;
}
public void UpdateLight()
{
float t = (float)ClockSystem.Hour / 24f;
float dayNightT = dayNightCurve.Evaluate(t);
sunlight.intensity = Mathf.Lerp(nightIntensity, dayIntensity, dayNightT);
}
}
지난 포스팅의 ClockSystem 스크립트에서 시간이 바뀔 때마다
OnTimeChanged 에 연결된 메서드를 실행시켜 ClockUI 를 업데이트 해주었다.
마찬가지로, 전역 조명의 밝기를 업데이트하게 수정해주었다.
| Night->Day | Day->Night |
|---|---|
![]() | ![]() |
시간의 흐름에 따라 마을의 밝기를 조절하는 스크립트를 완성하였다.
앞으로도 ClockSystem 을 활용하여
세금 시스템과 시간대에 따른 몬스터 생성 주기 기능을 추가해봐야겠다.