인프런 커뮤니티 질문&답변

제리님의 프로필 이미지

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

2-15강 적군을 처치한 score UI가 업데이트 X

해결된 질문

24.07.17 10:26 작성

·

75

0

안녕하세요 득우님, 2-15강에서 적군을 처치한 score UI가 제대로 업데이트 되지 않아서 질문을 남기게 되었습니다.

강의대로 따라한 결과, Controller 블루프린트에서 GameOver와 GameClear event는 제대로 동작하여서 게임의 승리와 죽음시 관련 UI들은 잘 spawn됩니다.

하지만, 적군 NPC 처리시 적군 처리 count가 업데이트가 안됩니다. 그러나 적군 처리시 text widget의 숫자의 색깔이 변하는 것으로 보아, WBP_PlayerScore의 custom event들은 잘 트리거 되지만, 아래 그림의 빨간 화살표가 가르키는 New Score 변수가 업데이트 되지 않는다는 것으로 유추해 보았습니다.

 

득우 질문.png

 

그래서 만약 제가 생각한 가정이 맞다면 다음과 같은 궁금증이 생겼습니다.

1. WBP_PlayerScore의 custom event를 트리거하는 부분은 어디에 있는지

2. 각 WBP_PlayerScore의 custom event에 Input으로 들어가는 "New Score"라는 변수는 어떻게 접근하는지

3. Controller에서는 Custom event를 트리거할때 Kismet 접두사가 붙은 C++함수로 컨트롤 했는데, PlayerScore의 custom event도 같은 방식인건지

 

감사합니다!

답변 1

1

이득우님의 프로필 이미지
이득우
지식공유자

2024. 07. 17. 21:55

안녕하세요. 마지막 예제는 C++외에도 블루프린트와 함께 활용할 수 있도록 한번 구성해보았습니다.
ABPlayerController를 상속받은 BP_ABPlayerController에 SetScore를 호출하는 이벤트를 다음과 같이 구성했습니다.

ABPlayerController의 헤더에 다음과 같은 블루프린트 이벤트를 선언했습니다. 이는 Cpp에는 내용이 없고 블루프린트에 선언한 OnScoreChangedCpp 이벤트에 대응되는 함수입니다.

UFUNCTION(BlueprintImplementableEvent, Category = Game, Meta = (DisplayName = "OnScoreChangedCpp"))
void K2_OnScoreChanged(int32 NewScore);

UFUNCTION 매크로에 의해 블루프린트에서는 OnScoreChangedCpp라는 이름의 이벤트로 나타나지만 Cpp 코드에서는 K2_OnScoreChanged 함수를 호출해주어야 합니다.

K2_OnScoreChanged 함수 호출은 다음과 같이 GameScoreChanged 함수 호출을 통해 발생되며, GameScoreChanged 함수는 점수를 관장하는 주체인 게임 모드를 통해 발동됩니다.

void AABGameMode::OnPlayerScoreChanged(int32 NewPlayerScore)
{
	CurrentScore = NewPlayerScore;

	AABPlayerController* ABPlayerController = Cast<AABPlayerController>(GetWorld()->GetFirstPlayerController());
	if (ABPlayerController)
	{
		ABPlayerController->GameScoreChanged(CurrentScore);
	}

	if (CurrentScore >= ClearScore)
	{
		bIsCleared = true;

		if (ABPlayerController)
		{
			ABPlayerController->GameClear();
		}
	}
}   

이렇게 해서 블루프린트 이벤트 호출이 발생하면 다음의 블루프린트 로직에 의해 문의주신 UI의 SetScore함수(이벤트)가 발동되도록 설계했습니다.

image

제리님의 프로필 이미지
제리
질문자

2024. 07. 23. 18:09

친절한 설명 감사드립니다 득우님!

제리님의 프로필 이미지

작성한 질문수

질문하기