게임 개발/학습 일지

260225 Unreal 부트캠프 - 구조체를 활용한 블루프린트 탄약 시스템 만들기 + 화면에 표시하기

이개 2026. 2. 25. 15:07

자바로 웹만 하던 나로서는 블루프린트를 이용한 구조체와 Enum 만들기는 아직 손에 안 익는 것 같다. 그나마 Enum은 꽤 썼지만 블루프린트 파일로 만들어서 가져오기하는 것이 번거롭게 느껴진다.

 

블루프린트 구조체는 Set 명령어로 데이터 수정 시에 반드시 모든 변수들을 지정해줘야해서 번거롭다. 코드처럼 item.name으로 바로 넣을 수 있으면 좋을텐데.

 

오늘부터는 언리얼 엔진을 영문버전으로 세팅하여 사용하기로하였다.

영문버전의 Enum과 Structure 위치는 이러하다.

Enum은 Heat State를 결정한다.
Structure는 한 무기의 정보를 저장한다.

 

무기는 1, 2, 3을 누르면 여러 개 중에 고를 수 있도록 웨폰을 배열 타입으로 만들어준다.

 

 

나름대로 정리는 했지만 너저분한 코드

 

함수 출력부분에 Enum결과를 추가해주었다.

 

1. 최대 탄약 수에 맞춰 탄환을 갖고 있을 경우, 재장전 불가능

2. 좌클릭 시 탄약은 줄고 온도는 올라감.

3. T를 누르면 온도가 1도 내려감. 0도 아래로는 내려가지 않는다.

 

쿨다운은 Timer를 사용하면 더 자연스럽게 구현이 가능할 것이다.

 

Print String 말고 제대로 된 UI를 넣어보고 싶었으나 조금 더 공부해야 될 듯 하다.

 

 

HUD 만들기의 경우 위젯 블루프린트(WBP)를 만들어 넣으면 된다는 것은 알고 있다. 플레이어 HUD 만들기 때 했는데, 텍스트 넣는 구조를 잘 모르겠다.

 

텍스트 박스는 사용자의 입력한 텍스트를 예상하기 때문에 여기서 Is Variable에 체크가 되어 있으며, 변수 여부가 활성화 되어 있으면 블루프린트의 이벤트 그래프에서 사용할 수 있다.

 

다른 블루프린트에서 HUD 로직의 실행을 트리거하기 위해 이벤트 트리거 대신 함수를 사용한다.

 

위젯 블루프린트에서 함수를 만들고, 다른 블루프린트에서 이 함수를 호출하면 된다.

위젯 블루프린트에서 원하는 텍스트박스에 Set Text를 해주는데, 이때 원하는 텍스트를 넣으려면 함수 입력 변수로 만들어주고 호출할 때 텍스트를 넣으면 된다.

 

이걸 했으면 레벨 블루프린트나 플레이어 블루프린트에서 위젯을 표시하고 함수에 텍스트를 넣어주면 된다.

화면에 위젯을 세팅하는 블루프린트 노드. Add to Viewport까지 해야 화면에 표시된다.
위에서 저장한 HUD라는 위젯 블루프린트 변수를 타깃으로, 레벨 블루프린트에서 위젯 블루프린트 함수 Display State를 불러와 텍스트를 넣어줌.

Format Text에서 엔터 넣는 방법은 Shift + Enter이다.

 

드디어 Print String 대신 화면에 정보를 표시할 수 있게 되었다!