본문 바로가기
디지털노마드

챗GPT게임개발57: Unity에서 자연스러운 낮과 밤의 주기 구현하기(8)

by 인텔리노마드라이프 2024. 7. 1.
728x90

안녕하세요. 인텔리원스튜디오(IntelliOneStudio)입니다.

오늘은 GPT-4, GPT-4o 활용해서 Unity에서 자연스러운 낮과 밤의 주기 구현하기를 살펴볼께요.

[오늘의 목표] GPT-4, GPT-4o 활용해서 Unity로 구현한 자연스러운 낮과 밤의 주기 구현하기
  1. DayLight 살펴보기
  2. NightLight 살펴보기
  3. AmbientLight 살펴보기
  4. SunRimLight 살펴보기
  5. MoonRimLight 살펴보기
  6. 그림자 각도 및 길이 설정
  7. 전체 조명과 그림자 통합하기
  8. 에디터에서 테스트하기
  9. 최적화 및 성능 고려 사항
  10. 결론 

*Happy Harvest - 2D Sample Project에서 구현한 내용을 설명해요.

[참고] 챗gpt를 활용하여 개발/배포한 게임(소요기간 : 3주)

아래 링크를 통해서 다운로드해보세요.

 

[APP Store]

https://apps.apple.com/kr/app/%EB%86%8D%EB%B6%80%EC%9D%98-%EA%BF%88/id6479183930

 

‎농부의 꿈

‎오래된 전설이 숨겨져 있는 [농부의 꿈]목장 한구석에서 ‘비밀의 문'과 '마법 책'이 발견되었어요. [변신하는 동물들] 병아리가 합쳐져 닭이 되고, 닭이 합쳐져 고슴도치로 변신하며, 점점 더

apps.apple.com

 

[Google Play]

https://play.google.com/store/apps/details?id=com.intellione.farmersfirstdream&pcampaignid=web_share

 

농부의 꿈 - Google Play 앱

평화로운 목장에서 신나는 동물 합치기 무료게임 (바람, 뚫어뻥, 밧줄, 무중력 등 매직 아이템 활용해 병아리를 젖소로 키워보세요.)

play.google.com

 

에디터에서 테스트하기

이번 글에서는 Unity 엔진을 활용해 자연스러운 낮과 밤의 주기를 구현하는 방법을 알아보려고 해요. 특히, 여덟 번째 단계로 에디터에서 조명과 그림자 설정을 테스트하는 방법에 대해 집중적으로 설명할게요.

에디터에서 테스트의 중요성

에디터에서 테스트를 통해 조명과 그림자 설정이 의도한 대로 작동하는지 확인할 수 있어요. 이를 통해 실시간으로 변경 사항을 확인하고, 필요한 조정을 빠르게 할 수 있어요.

커스텀 인스펙터를 통한 실시간 테스트

커스텀 인스펙터를 사용하면 Unity 에디터에서 조명 설정을 실시간으로 테스트할 수 있어요. 이를 통해 각 조명과 그림자가 시간의 흐름에 따라 어떻게 변화하는지 시각적으로 확인할 수 있어요.

커스텀 인스펙터 설정

아래는 커스텀 인스펙터를 설정하는 코드 예시예요. 이 코드는 Unity 에디터에서 DayCycleHandler 스크립트를 위한 커스텀 인스펙터를 생성해요.

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

[CustomEditor(typeof(DayCycleHandler))]
class DayCycleEditor : Editor
{
    private DayCycleHandler m_Target;

    public override VisualElement CreateInspectorGUI()
    {
        m_Target = target as DayCycleHandler;

        var root = new VisualElement();
        
        InspectorElement.FillDefaultInspector(root, serializedObject, this);
        
        var slider = new Slider(0.0f, 1.0f);
        slider.label = "Test time 0:00";
        slider.RegisterValueChangedCallback(evt =>
        {
            m_Target.UpdateLightingAndShadows(evt.newValue);
            
            slider.label = $"Test Time {GameManager.GetTimeAsString(evt.newValue)} ({evt.newValue:F2})";
            SceneView.RepaintAll();
        });
        
        root.RegisterCallback<ClickEvent>(evt =>
        {
            m_Target.UpdateLightingAndShadows(slider.value);
            SceneView.RepaintAll();
        });
        
        root.Add(slider);

        return root;
    }
}
#endif

커스텀 인스펙터 기능 설명

  • Slider: 슬라이더를 사용해 시간을 조절할 수 있어요. 0.0부터 1.0까지의 값을 가지며, 이는 하루의 시작부터 끝까지를 나타내요.
  • Label: 슬라이더의 현재 값을 표시해줘요. 이를 통해 현재 시간이 어느 시간대에 해당하는지 알 수 있어요.
  • ValueChangedCallback: 슬라이더 값이 변경될 때마다 조명과 그림자를 업데이트해요. 이를 통해 실시간으로 변화된 조명과 그림자를 확인할 수 있어요.
  • SceneView.RepaintAll: 씬 뷰를 다시 그려 변경 사항을 즉시 반영해요.

에디터에서 테스트하는 방법

  1. DayCycleHandler 스크립트 선택: Unity 에디터에서 DayCycleHandler 스크립트가 붙어있는 게임 오브젝트를 선택해요.
  2. 슬라이더 조작: 커스텀 인스펙터에 추가된 슬라이더를 조작해 시간 비율을 변경해요.
  3. 변화 확인: 슬라이더를 움직이며 각 시간대(새벽, 아침, 낮, 저녁, 밤)에 따른 조명과 그림자의 변화를 확인해요.

 

테스트 결과 확인 및 조정 방법

  • 조명 색상 확인: 각 시간대에 따른 조명 색상이 의도한 대로 변화하는지 확인해요.
  • 그림자 각도 및 길이 확인: 태양과 달의 위치에 따라 그림자의 각도와 길이가 자연스럽게 변화하는지 확인해요.
  • 필요한 조정: 테스트 결과를 바탕으로 필요한 조정 사항을 확인하고, 애니메이션 커브나 그라디언트 설정을 수정해요.

결론

에디터에서 테스트하기는 조명과 그림자 설정이 의도한 대로 작동하는지 확인하고, 필요한 조정을 빠르게 할 수 있는 중요한 단계에요. 커스텀 인스펙터를 통해 실시간으로 테스트하고 조정하면, 플레이어는 더욱 몰입감 있는 환경에서 게임을 즐길 수 있어요.

 

다음 글에서는 최적화 방법을 다루며, 더욱 완성도 높은 주기 구현 방법을 소개할게요. 기대해 주세요!

 

지금까지,

언제나 성장하는 인텔리원스튜디오(IntelliOneStudio)입니다.

감사합니다.

728x90