스카이박스 프로퍼티
이 사진의 Properties에 있는 쉐이더 속성 값을 변경
진행한 것
Rotation -> Time.DeltaTime으로 특정시간 동안 움직이게 하기
Exposure -> 0, 2, 0.96 순으로 어둡게 시작하여 밝아졌다가 원래대로 돌아가는 느낌을 표현
ControlSky.cs
public class ControlSky : MonoBehaviour { private float exposure1 = 0f; private float exposure2 = 2f; private float exposure3 = 0.96f; private float customTime = 0f; private bool isChangingExposure = false; private bool isScriptActive = true; private Material skyboxMaterial; void Start() { skyboxMaterial = RenderSettings.skybox; SetExposure(exposure1); customTime = 0f; } void Update() { customTime += Time.deltaTime; if (isScriptActive) { if (!isChangingExposure) { StartCoroutine(ChangeExposure(exposure2, 2.5f)); } skyboxMaterial.SetFloat("_Rotation", customTime * 2f + 80); } } private void SetExposure(float value) { if (skyboxMaterial != null) { skyboxMaterial.SetFloat("_Exposure", value); } } private IEnumerator ChangeExposure(float targetExposure, float duration) { isChangingExposure = true; float initialExposure = RenderSettings.skybox.GetFloat("_Exposure"); float startTime = Time.time; float endTime = startTime + duration; while (Time.time < endTime) { float t = (Time.time - startTime) / duration; float currentExposure = Mathf.Lerp(initialExposure, targetExposure, t); SetExposure(currentExposure); yield return null; } SetExposure(targetExposure); isChangingExposure = false; if (targetExposure == exposure3) { isScriptActive = false; } else if (targetExposure == exposure2) { StartCoroutine(ChangeExposure(exposure3, 2.5f)); } } }
skyboxMaterial = RenderSettings.skybox; 로 Skybox Material을 할당하고 .SetFloat를 통해 원하는 값으로 변경
_Exposure값은 코루틴을 사용하여 특정 시간 후에 다음 값으로 변경되도록 설정.
코루틴
장점
부드러운 애니메이션 및 전환: 코루틴은 값의 변화를 부드럽게 조절할 수 있도록 도와줍니다.
코드 가독성 향상: 복잡한 비동기 작업을 효율적으로 처리할 수 있으므로 코드의 가독성을 향상시킵니다.
단점
오류 처리 어려움: 예외가 발생하면 코루틴이 즉시 중단되지 않고, 예외를 적절히 처리해야 합니다.
미세한 성능 오버헤드: 코루틴은 작업을 중단하고 다시 시작하는 데 약간의 오버헤드가 발생할 수 있습니다.
오작동 가능성: 코루틴이 중단되지 않고 계속 실행되는 경우 메모리 누수가 발생할 수 있습니다.
UI작업은 거의 완료 하였고 게임 로직 관련 플레이어 공격력 UP 버튼 등을 적절한 함수와 연결 시켜 기능을 구현해야 함.