inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

161

제리

작성한 질문수 2

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도 같은 방식인건지

 

감사합니다!

unreal-engine ue-blueprint 언리얼-c++

답변 1

1

이득우

안녕하세요. 마지막 예제는 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

1

제리

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

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

47

2

12강 행동트리에서 질문이 있습니다.

0

52

1

위젯 사이즈랑 위치 질문드려요.

0

82

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

94

3

VS 2026 의 문제일까요?

0

489

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

95

3

캐릭터가 움직이지 않습니다.

0

182

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

62

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

95

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

78

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

73

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

71

2

Use Controller Rotation 옵션값이 궁금합니다.

0

84

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

65

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

78

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

64

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

66

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

73

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

115

2

언리얼 공부방법에 대해 질문드립니다.

0

87

2

4강 에서 이상한 그림자가 남습니다.

0

47

1

2강에서 카메라 회전안되시는분 참고

2

91

2