【UE4 RTS】11-HUD 기능 파트1

머리말

본 글에서는 게임 상태의 게임 시간과 게임 날짜를 블루프린트 인터페이스를 통해 컨트롤 블루프린트로 전달하여 올바르게 표시하도록 한다. 제어 청사진 인터페이스.

효과

단계

1. 게임 날짜 표시

1. 청사진 인터페이스 "RTS_GameTime_IF"를 엽니다.

"SetGameClock"이라는 새 기능을 추가합니다.

 add 함수의 입력과 출력은 다음과 같습니다.

계속해서 "SetGameCalender"라는 새 기능을 추가합니다.

다음 입력 및 출력 추가

2. 제어 청사진 "GameTime_HUD"를 엽니다.

 그래프의 클래스 설정에 청사진 인터페이스 "RTS_GameTimeIF" 추가

 3. 게임 상태 "RTS_GameState_BP"를 엽니다.

"SetCalendar" 기능 열기

 

다음 노드 추가

 "SetClock" 기능을 열고 다음 노드를 추가합니다.

 이 시점에서 게임 상태의 게임 날짜와 게임 시간은 블루프린트 인터페이스를 통해 제어 블루프린트로 전달될 수 있습니다.

 4. 제어 청사진 "GameTime_HUD"로 돌아가서 인터페이스 기능 "SetGameCalendar"를 엽니다.

함수의 GameDate 입력을 변수로 승격하고 출력의 성공 핀을 True로 설정합니다.

 디자이너에서 요일을 표시하는 데 사용되는 텍스트를 선택하고 해당 콘텐츠에 대한 바인딩 함수를 만듭니다.

 바인딩된 함수의 이름은 "Get_TextBlock_Day_GetDay"입니다.

 함수의 내용은 다음과 같습니다. 여기서 "DayLocal" 및 "DayTextLocal"은 지역 변수입니다.

 이 시점에서 게임을 실행하면 "TextBlock_Day" 컨트롤이 현재 게임 날짜의 날짜를 표시하는 것을 볼 수 있습니다.

5. 새 열거 유형을 만들고 각 월의 월 이름을 나타내는 데 사용되는 "MonthsNamesEnum"으로 이름을 지정합니다.

 다음 열거형 값을 추가합니다.

 6. 컨트롤 청사진 "GameTime_HUD"로 돌아가서 월을 표시하는 데 사용되는 텍스트 컨트롤의 텍스트 콘텐츠에 대한 바인딩 함수를 만들고 바인딩 함수 이름을 "Get_TextBlock_Month_GetMonth"로 지정합니다.

 이름이 "MonthNameRef"인 새 변수, 변수 유형 "MonthsNamesEnum"을 추가합니다.

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

 이제 게임을 실행하면 게임 날짜에서 월을 볼 수 있습니다.

게임 날짜에 연도를 표시하는 컨트롤에 대한 바인딩 함수를 디자이너에서 만들고 바인딩 함수 이름을 "Get_TextBlock_Year_GetYear"로 지정합니다.

 

 함수의 논리는 다음과 같습니다. 여기서 "YearLocal"은 배열 "GameDate"의 세 번째 요소로 승격된 로컬 변수입니다.

 이때 게임을 실행하면 게임 날짜에 년, 월, 일이 정상적으로 표시되는 것을 확인할 수 있습니다.

2. 게임 시간 표시

1. 제어 청사진 "GameTime_HUD"에서 인터페이스 기능 "SetGameClock"을 엽니다.

입력 "GameTime"을 변수로 승격

 "Button_MC" ​​버튼에 대한 버튼 클릭 이벤트 추가

기본값이 True인 "IsMilitaryTime"이라는 부울 변수를 추가합니다.

 "Button_MC" ​​버튼의 클릭 이벤트 로직은 다음과 같으며 주로 12시간제와 24시간제 전환에 사용됩니다.

 디자이너로 돌아가서 시간을 표시하는 데 사용되는 텍스트 컨트롤의 텍스트 콘텐츠에 대한 바인딩 함수를 만듭니다.

 바인딩된 함수의 함수 이름을 "Get_TextBlock_Hour_GetHour"로 이름을 바꿉니다.

 먼저 "GameTime" 배열의 세 번째 요소를 가져와 로컬 변수 "HoursLocal"로 승격합니다.

문자열 유형의 로컬 변수를 추가하고 이름을 "HoursTextLocal"로 지정하고 기본값을 0으로 설정합니다.

 다음 노드 추가

디자이너에서 텍스트 컨트롤 "TextBlock_Minute"의 텍스트 콘텐츠에 대한 바인딩 함수를 만듭니다.

 바인딩된 함수의 이름은 "Get_TextBlock_Minute_GetMinute"입니다.

 먼저 "GameTime" 배열의 두 번째 요소를 꺼내 "MinutesLocal"이라는 로컬 변수로 승격합니다.

 새 로컬 변수 "MinutesTextLocal"을 만들고 기본값을 0으로 설정합니다.

 계속해서 다음 노드를 추가합니다.

다음 텍스트 컨트롤의 텍스트 콘텐츠에 대한 바인딩 함수를 만듭니다.

 바인딩된 함수의 이름은 "Get_TextBlock_AMOrPM_GetSecondSpecial"입니다.

 먼저 "GameTime" 배열의 첫 번째 요소를 "SecondSpecialLocal"이라는 로컬 변수로 승격합니다.

 "SecondSpecialTextLocal"이라는 새 로컬 변수를 만듭니다. 기본값은 0입니다.

 함수에 다음 노드를 계속 추가합니다.

 디자이너에서 다음 텍스트 컨트롤의 텍스트 콘텐츠에 대한 바인딩 함수를 만듭니다.

 바인딩된 함수의 이름은 "Get_TextBlock_TimeSpace2_SetSpacerSpecial"입니다.

 기본값이 ":"인 로컬 변수 "SpecialSpacerLocal"을 만듭니다.

 함수에 다음 노드를 추가합니다.

 이 시점에서 현재 게임의 날짜와 시간이 인터페이스에 올바르게 표시되는 것을 볼 수 있습니다.

 게임 상태 "RTS_GameState_BP"의 변수 "DefaultGameSpeed" 및 "GameSpeed"를 150에서 1로 변경하면 인터페이스의 시간 변경이 가속화되었음을 분명히 알 수 있습니다.

추천

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