【UE4 RTS】08-게임 시계 설정하기

머리말

본 글에서 달성한 효과는 게임 실행 후 현재 게임 시간(년, 월, 일, 시, 분, 초)을 기록할 수 있도록 한 것이며, 변수를 수정하여 게임 시간의 속도를 변경할 수 있다.

효과

단계

1. Blueprints 폴더에 다음 두 폴더를 만들고 이름을 각각 "GameSettings" 및 "Player"로 지정합니다.

"RTS_CameraPawn_BP" 및 "RTS_PlayerController_BP"를 "Player" 폴더로 이동

 "RTS_GameModeBase_BP"를 "GameSettings" 폴더로 이동

새 게임 상태 기반 만들기

이름을 "RTS_GameState_BP"로 지정합니다.

 새 폴더를 만들고 이름을 "Library"로 지정합니다.

이 폴더에 새 청사진 함수 라이브러리를 추가합니다.

이름이 "RTS_FuncLib"

 다른 청사진 인터페이스 추가

이름을 "RTS_GameTime_IF"로 지정합니다.

 

 2. 청사진 함수 라이브러리 "RTS_FuncLib"를 열고 새 함수의 이름을 "SetGameTime"으로 바꿉니다.

"DeltaTime", "GameSpeed", "InitialGameTime", "GameTime", "DayCount"라는 세 개의 입력과 두 개의 출력을 추가합니다.

다음 노드 추가

3. 청사진 인터페이스 "RTS_GameTime_IF"를 열고 새 기능의 이름을 "UpdateGameSpeed"로 바꿉니다.

부동 소수점 유형 "SpeedMultiplier"라는 입력 추가

4. 게임 상태 베이스 "RTS_GameState_BP"를 열고 새 매크로를 만들고 이름을 "ReferneceCasts"로 지정합니다.

매크로에 다음 노드를 추가하여 플레이어 컨트롤러 "RTS_PlayerController_BP"의 참조를 가져옵니다. 여기서 변수 "ControllerRef"는 핀 "As RTS Player Controller BP"가 유형 변환 후 승격되는 변수입니다.

이벤트 그래프에 다음 노드를 추가하여 매크로를 실행합니다.

 청사진 함수 라이브러리에 생성된 함수 "SetGameTime"을 프레임마다 실행합니다.

핀 "GameSpeed" 및 "InitialGameTime"을 변수로 승격한 다음 이름을 "GameSpeed" 및 "GameTime"으로 지정하고 기본값은 각각 150, 0

 "DayCounter"라는 새 정수 변수를 추가합니다.

 "GameTime" 및 "DayCounter" 설정

공용 변수인 "Hours", "Minutes", "Seconds"라는 세 개의 정수 변수를 각각 추가합니다. 이 변수는 현재 게임 시간을 나타내는 데 사용됩니다. 그 중 "Hour"의 기본값은 11로 설정되어 있으며, 이는 게임이 시작되면 게임이 정오에 있음을 의미합니다.

게임이 시작되면 시, 분, 초(단위: 시간)에 따라 초기 게임 시간을 설정합니다.

 현재 게임 날짜를 나타내는 데 사용되는 "Year", "Month", "Day"라는 정수 변수 3개를 더 추가하고 모두 공개 변수이며 기본값은 2023으로 설정되어 있으며, 각각 8과 10.

 

 "GameDate"라는 정수 배열 유형 변수를 추가합니다.

초기 게임 시간 설정 후 초기 게임 날짜 설정 진행

새 부동 소수점 변수를 만들고 이름을 "DefaultGameSpeed"로 지정하고 기본값을 150으로 설정합니다.

초기 게임 속도 설정:

새 함수를 만들고 이름을 "SetClock"으로 지정합니다.

 함수 논리는 다음과 같습니다.

"SetCalendar"라는 다른 함수를 추가합니다.

함수 논리는 다음과 같습니다.

이벤트 그래프에서 이 두 함수를 호출합니다.

클래스 설정에 청사진 인터페이스 "RTS_GameTime_IF" 추가

"SpeedMutiplier"라는 새 부동 소수점 변수를 추가합니다. 기본값은 1로 설정됩니다.

 이벤트 그래프에 다음 노드를 추가합니다.

 "GameSpeedControl"이라는 이벤트 디스패처를 추가합니다.

 "GameTime"이라는 부동 유형 입력을 추가합니다.

 이벤트 디스패처 호출

 5. 게임 모드 베이스 "RTS_GameModeBase_BP"를 열고 게임 상태 클래스를 "RTS_GameState_BP"로 설정합니다.

이때 게임을 실행하면 아래와 같이 뷰포트의 왼쪽 상단 모서리에 인쇄된 연도, 월, 일, 시, 분, 초를 볼 수 있습니다.

 게임 시간을 빠르게 하고 싶다면 게임 상태 "RTS_GameState_BP"에서 변수 "DefaultGameSpeed"의 기본값을 더 작게 설정할 수 있습니다.

 예를 들어 "DefaultGameSpeed" 변수의 기본값을 0.025로 설정하면 게임 시간이 빨라집니다.

 변수 "DefaultGameSpeed"는 실시간과 게임 시간 간의 변환을 제어합니다.

        "DefaultGameSpeed"의 기본값이 3600으로 설정되어 있으면 실시간과 게임 시간이 완전히 동기화되었음을 의미합니다.

        "DefaultGameSpeed"의 기본값이 150으로 설정되어 있으면 현실의 1시간 = 게임의 1일을 의미합니다.

        "DefaultGameSpeed"의 기본값이 2.5로 설정되어 있으면 현실의 1분 = 게임의 1일을 의미합니다.

추천

출처blog.csdn.net/ChaoChao66666/article/details/132207608