구현한 기능: 라이트 모드 조절
목적:
기본 시야와 야간 시야 사이에서 자연스러운 전환을 가능하게 함으로써, 플레이어가 게임 내 다양한 시각적 환경에서 불편함 없이 경험할 수 있도록 하기 위함입니다. 이를 통해 게임의 실제감을 높이고, 플레이어에게 더 몰입감 있는 환경을 제공하려는 목적입니다.
사용한 스크립트:
NightVision
구현 코드 (간단한 코드 로직):
더보기
if (isNightVisionActive)
{
// 나이트 비전이 활성화되었을 경우 Render Mode를 Auto로 설정
light.renderMode = LightRenderMode.Auto;
}
else
{
// 나이트 비전이 비활성화되었을 경우 Render Mode를 ForcePixel로 설정
light.renderMode = LightRenderMode.ForcePixel;
}
사용 이유:
이 기능은 라이트 컴포넌트의 렌더 모드를 상황에 따라 조절함으로써, 일상적인 환경과 야간 환경 사이에서의 시각적 전환을 자연스럽게 만듭니다. 낮에는 Auto 모드를 통해 자연스러운 조명 환경을 유지하며, 야간이나 나이트 비전을 활성화할 때는 ForcePixel 모드를 사용하여 보다 명확하고 집중된 시야를 제공합니다. 이는 플레이어가 게임 내에서 경험하는 시각적 불편함을 최소화하고, 각 상황에 맞는 최적의 조명 환경을 제공하여 게임의 몰입감을 극대화하는 데 기여합니다.
트러블슈팅: LightRenderMode 설정 오류
-
- 왜(Why): Light 컴포넌트의 renderMode 속성 조절은 게임 내에서 조명의 렌더링 방식을 결정하며, 이는 성능 최적화와 시각적 효과에 중요한 영향을 미칩니다. 스크립트를 통한 속성 조절 시 컴파일 오류가 발생하는 것은 개발 과정에서의 효율성을 저하시키며, 원하는 조명 효과를 달성하는 데 방해가 됩니다.
- 어떻게(How): 문제의 원인을 분석하기 위해, 유니티 API와 유니티 에디터 UI 간의 표시 방식 차이를 확인하였습니다. 스크립트(API 레벨)에서 사용되는 열거형과 유니티 에디터(UI 레벨)에서 사용자에게 표시되는 옵션 간의 불일치가 문제의 핵심이었습니다. 이를 해결하기 위해, 유니티 API에서 인식할 수 있는 열거형 값을 사용하여 스크립트를 수정하는 방법을 모색하였습니다.
- 무엇(What): Important와 Not Important 대신 ForcePixel과 ForceVertex와 같은 유니티 API에서 인식할 수 있는 열거형 값을 사용하여 문제를 해결하였습니다. 특히, ForcePixel을 사용하여 스크립트를 수정한 후 실행하면, 유니티 인스펙터에서 라이트의 Render Mode가 Important로 조절되는 것으로 확인되었습니다. 이는 ForcePixel이 유니티 내부적으로 Important와 유사한 역할을 하며, 스크립트를 유니티 에디터 내에서 오류 없이 컴파일하게 해줌과 동시에, 유니티 인스펙터 UI에서는 내부적인 매핑을 통해 Important로 표시되도록 합니다.
'TIL' 카테고리의 다른 글
03.15 (TIL-Unity) (0) | 2024.03.15 |
---|---|
03.14 (TIL-Unity) (0) | 2024.03.15 |
02.21 (TIL-Unity) (0) | 2024.02.21 |
02.20 (TIL-Unity) (0) | 2024.02.20 |
02.16 (TIL-Unity) (0) | 2024.02.16 |