[내일배움캠프 본 캠프 80일차] 다이얼로그를 연출을 통해 출력

2026. 1. 21. 23:16본 캠프

 

특정 미션에서 트리거를 통해 다이얼로그를 보여주고, 미션 실패시 다이얼로그  연출 및 비네팅 효과를 통해

미션 실패를 연출하는 부분을 맡게 되었다.

 

그래서 SO를 통해 연출을 어떻게 할 건지 추후에 활용 할 수 있도록 SO 데이터를 통해 연출 옵션을 설정할 수 있도록 만들었다.

 

연출시 입력 여부를 막는 것과 Vignette 연출 옵션 그리고 플레이어를 어디로 강제로 이동시킬지에 대해서 써놓고

간단한 다이얼로그 한 줄을 출력하도록 준비해주면 된다.

 

 

씬의 준비물로는 시퀀스를 실행할 오브젝트와 비네트를 연출할 비네트 컨트롤러, 그리고 글로벌볼륨(비네트 등록)이고

 

 

현재미션의 Goal을 받아와서 실패조건의 bool값을 읽어와 실패에 해당할 경우 시퀀스연출 이벤트를 발행해서

SequenceExecutor가 이를 받아와 조건에 맞춰 연출을 실행한다.

 

 

다이얼로그를 출력하고, FadeOut을 통해 플레이어의 이동처리를 가린다.

이후 FadeIn을 연출하면서 실패결과 다이얼로그를 띄운다.

 

 


해당 미션을 연출할 때 여러 문제점들을 겪었었는데,

 

SO에 상태를 저장할 때 상태를 리셋시키는 초기화 시점을 언제로 잡을 것인지에 대해 명확히 인지하고 있어야한다는 점이다.

 

해당 부분 때문에 한번 런타임에서 진행했던 상태가 SO에 저장이되어서 이후 이어하기 든 새로 게임을 시작하든 런타임에 상관없이

SO에 상태가 한번 기록되어서 마치 세이브 데이터처럼 계속해서 

연출이 나오지 않고 미션 캐릭터가 죽어도 연출이 나오지 않는 상황이 생겼었다.

 

SO는 기본적으로 프로젝트 에셋이며 씬로드/언로드와 무관하기 때문에 Editor메모리에 남아있다.

그래서 내가 맡은 미션의 경우에는 특수한 연출값이 있기 때문에 별도의 Monobehavior가 아닌 클래스로 만들어서

Reset 메서드를 담아 준비하고

 

미션들이 세팅되는 시작지점에서 런타임 상태를 초기화하도록 등록해주는 작업을 추가하고 나서야

 

비로소 이어하기/중단후 다시하기/다음날 등 신 파괴나 런타임 종료 후 다시 시작할 때도 미션의 연출이 정상적으로 진행되었다.