변수 유형과 기본 활용법
불리언·정수·실수·문자열·벡터·오브젝트 참조의 차이를 이해하고 변수를 생성해 그래프에서 활용합니다.
이제 블루프린트의 기본적인 개념과 에디터 사용법을 익히셨으니, 블루프린트의 가장 핵심적인 요소 중 하나인 변수(Variables)에 대해 깊이 있게 알아보겠습니다.
변수는 게임 내에서 변하는 데이터를 저장하고 관리하는 공간입니다.
예를 들어, 플레이어의 현재 체력, 점수, 캐릭터의 이름, 문의 열림/닫힘 상태 등 게임의 모든 동적인 정보는 변수를 통해 다루어집니다.
변수를 이해하는 것은 블루프린트를 통해 복잡한 게임 로직을 구현하는 데 있어 필수적입니다.
마치 수학에서 미지수를 사용하여 문제를 풀듯이, 블루프린트에서도 변수를 통해 다양한 데이터를 유연하게 처리할 수 있습니다.
블루프린트 변수란 무엇인가?
변수는 특정 데이터(Data)를 담는 이름표가 붙은 상자라고 생각할 수 있습니다.
이 상자 안에는 숫자, 텍스트, 참/거짓 등의 다양한 종류의 데이터가 들어갈 수 있으며, 필요에 따라 이 데이터는 변경될 수 있습니다.
언리얼 엔진의 블루프린트에서는 이러한 변수를 직관적으로 생성하고 관리할 수 있습니다.
변수의 주요 유형
블루프린트에서 사용할 수 있는 변수의 종류는 매우 다양하지만, 크게 몇 가지 기본 유형으로 나눌 수 있습니다.
각 유형은 저장할 수 있는 데이터의 형태가 정해져 있습니다.
올바른 유형의 변수를 선택하는 것이 데이터를 효율적으로 관리하는 첫걸음입니다.
- 개념: 가장 간단한 변수 유형으로, 참(True) 또는 거짓(False) 두 가지 상태만을 가집니다.
- 사용 예시: 문이 열렸는가?(True/False), 적군을 발견했는가?(True/False), 불이 켜져 있는가?(True/False)
- 색상: 빨간색
- 개념: 소수점 없는 정수 값을 저장합니다. 양수, 음수, 0을 포함합니다.
- 사용 예시: 플레이어의 점수, 남은 탄약 수, 몬스터의 수
- 색상: 청록색
- 개념: 소수 부분이 있는 값을 유한한 정밀도로 근사해 저장합니다. 모든 정수나 소수를 정확히 표현하는 것은 아니며, UE5에서는 단정밀도·배정밀도 하위 타입을 확인합니다.
- 사용 예시: 캐릭터의 이동 속도, 남은 시간(초), 아이템의 가격
- 색상: 초록색
- 개념: 글자들을 저장합니다.
- String: 변경 가능한 문자열 (예: 채팅 메시지).
- Text: 현지화(Localization)에 유리한 텍스트 (예: UI에 표시되는 문구).
- Name: 대소문자를 구분하지 않는 식별자 (예: 에셋의 이름, 소켓의 이름). Name 값 내부의 문자열은 불변이지만 Name 변수에는 다른 값을 대입할 수 있습니다.
- 사용 예시: 플레이어 이름, 아이템 설명, NPC 대화 내용
- 색상: 분홍색 (Text), 자홍색 (String), 연보라색 (Name)
- 개념: 3차원 공간에서의 위치(X, Y, Z 좌표)나 방향, 크기를 나타내는 데 사용됩니다. X, Y, Z의 숫자 성분을 가지며, UE5의 공간 좌표 타입은 배정밀도를 지원합니다.
- 사용 예시: 오브젝트의 현재 위치, 목표 지점의 좌표, 발사체의 이동 방향
- 색상: 금색
- 개념: 3차원 공간에서의 회전(Roll, Pitch, Yaw 값)을 나타냅니다. 각 성분은 도 단위의 각도입니다. UE5의 공간 타입을 모두 32비트 Float라고 가정하지 않습니다.
- 사용 예시: 카메라의 시점 회전, 문의 열린 각도, 캐릭터의 바라보는 방향
- 색상: 파란색 계열
- 개념: 3차원 공간에서의 위치(Location), 회전(Rotation), 크기(Scale) 정보를 모두 포함합니다.
- 사용 예시: 오브젝트의 전반적인 상태 저장, 새로운 오브젝트를 생성할 위치와 방향, 크기 지정
- 색상: 주황색
색상은 빠른 식별 보조 수단입니다. 정확한 타입 이름과 핀 툴팁도 확인합니다.
오브젝트 참조(Object Reference)는 액터나 에셋의 값을 복사하는 대신 대상을 가리킵니다. 값이 None이거나 대상이 파괴될 수 있으므로 사용 전에 유효성을 확인합니다. 구조체(Struct), 열거형(Enum) 등도 이후에 확장해 사용할 수 있습니다.
변수 생성 및 활용 기본법
블루프린트에서 변수를 생성하고 사용하는 과정은 매우 직관적입니다.
변수를 실제 그래프에서 쓸 때는 타입을 고르는 일에서 끝나지 않습니다.
기본값과 인스턴스 편집 여부를 정한 뒤, Get/Set 노드로 읽고 쓰며 Print String으로 결과를 확인하는 순서까지 함께 익혀두면 실수가 줄어듭니다.
- 블루프린트 에디터의 좌측에 있는 변수 패널(Variables Panel)로 이동합니다.
- 패널 상단의
+ 변수(+ Variable)버튼을 클릭합니다. - 새로운 변수가 생성되면, 변수의 이름을 입력합니다. (예:
PlayerScore) - 변수 이름 옆의 드롭다운 메뉴를 클릭하여 원하는 변수 유형을 선택합니다. (예:
Integer) - 컴파일한 뒤 디테일 패널에서 기본값을 설정합니다.
Instance Editable은 배치한 인스턴스마다 에디터에서 값을 바꿀 수 있게 하는 옵션이며 런타임 접근 제어와는 다릅니다. 노출된 변수에 따라 사용할 수 있는 읽기 전용·접근 옵션을 구분합니다.
- 이벤트 그래프의 빈 공간에서 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 엽니다.
Set PlayerScore(여러분이 생성한 변수 이름)를 검색하여 선택합니다. 또는, 변수 패널에서 해당 변수를 드래그하여 그래프에 놓은 후Set을 선택합니다.Set노드의 입력 핀에 원하는 값을 연결하거나 직접 입력하여 변수의 값을 설정할 수 있습니다.
- 이벤트 그래프의 빈 공간에서 마우스 오른쪽 버튼을 클릭하여
Get PlayerScore를 검색하여 선택합니다. 또는, 변수 패널에서 해당 변수를 드래그하여 그래프에 놓은 후Get을 선택합니다. Get노드는 해당 변수가 현재 가지고 있는 값을 출력 핀으로 내보냅니다. 이 값을 다른 노드의 입력으로 연결하여 사용할 수 있습니다.
간단한 예시를 통해 변수 PlayerScore를 활용해 봅시다.
Integer 타입의 PlayerScore 변수를 생성하고 기본값을 0으로 설정합니다.
Event BeginPlay 노드에 연결하여 Print String 노드를 추가합니다.
In String 핀에 Get PlayerScore 노드를 연결하여 현재 점수를 출력합니다. (컴파일 후 실행하면 0이 출력될 것입니다.)
이제 PlayerScore를 100점 증가시키는 로직을 만들어봅시다.
- 앞서 만든 첫 번째
Print String의 실행 출력 뒤에Set PlayerScore를 연결합니다. BeginPlay에서 첫 출력으로 가는 연결을 유지합니다. Get PlayerScore노드를 추가하고, 이 노드의 출력 핀을Integer + Integer노드의 첫 번째 입력 핀에 연결합니다.Integer + Integer노드의 두 번째 입력 핀에100을 입력합니다.Integer + Integer노드의 출력 핀을Set PlayerScore노드의 입력 핀에 연결합니다.- 마지막으로,
Set PlayerScore노드 뒤에 또 다른Print String노드를 연결하고,Get PlayerScore를 다시 연결하여 변경된 점수를 출력합니다.
초깃값이 0이고 아래 순서대로 연결되었다면 첫 출력은 0, 두 번째 출력은 100입니다. 두 출력 사이에 Delay가 없으므로 의도적인 시간 지연은 없습니다. 화면에 쌓인 메시지의 위치와 호출 순서를 혼동하지 말고 Output Log나 중단점으로 확인합니다.
이처럼 변수를 통해 게임의 상태를 저장하고 변경하며, 이를 로직에 활용할 수 있습니다.
점수 변경 전후의 출력 순서를 연결합니다
이번 절에서는 블루프린트의 가장 기본적인 요소인 변수의 개념, 주요 유형, 그리고 생성 및 활용법에 대해 알아보았습니다.
변수는 앞으로 여러분이 만들 모든 블루프린트 로직의 근간이 될 것입니다.