1. 구조체(Structure)란?
구조체는 연관된 여러 데이터 유형을 하나로 묶어 관리하는 데이터 구조입니다.
- 예시: 위치, 회전, 크기를 포함하는 Transform 구조체.
- 구조체를 사용하면 여러 변수들을 압축하여 편리하게 관리할 수 있습니다.
- 일반적으로 데이터의 복사 방식으로 동작하지만, 상황에 따라 참조 방식도 고려해야 합니다.
2. 구조체 생성 및 설정
2.1 구조체 생성
- 콘텐츠 브라우저에서 Blueprints → Structure(구조체) 선택.
- 구조체의 이름을 설정합니다.
2.2 구조체 멤버 변수 추가
- 구조체를 더블 클릭하여 상세 페이지로 이동합니다.
- Add Variable을 클릭해 멤버 변수를 추가합니다.
- 예시:
hp
(Health Points, 타입: Integer)
exp
(Experience, 타입: Float)
speed
(타입: Float)
2.3 기본값 설정
- 구조체의 각 변수에 기본값을 설정할 수 있습니다.
- 예:
hp = 100
, exp = 0
, speed = 300
.
3. 구조체 사용하기
3.1 구조체 변수 추가
- 레벨 블루프린트에서 변수를 생성합니다.
- 변수의 데이터 타입을 방금 만든 구조체로 설정합니다.
- 예: Player라는 변수를 생성하고 타입을 PlayerInfo 구조체로 설정.
3.2 GET/SET 노드 사용
- GET 노드: 구조체 변수를 읽어옵니다.
- SET 노드: 구조체 변수의 값을 변경합니다.
특징:
- 핀 분리(Split Struct Pin): 구조체의 각 멤버 변수에 개별적으로 접근할 수 있습니다.
- 핀을 우클릭 → Split Struct Pin을 선택하면 구조체의 모든 멤버 변수가 개별 핀으로 나타납니다.
- 재결합(Combine Struct Pin): 다시 구조체 형태로 합칠 수 있습니다.
3.3 노드를 활용한 구조체 데이터 접근
1) Set Members in Structure 노드
- 특정 구조체의 일부 멤버 변수만 값을 변경할 수 있습니다.
- 노드를 추가한 후 Default Category에서 원하는 멤버 변수를 체크하여 활성화합니다.
2) Break Structure 노드
- 구조체를 연결하면 구조체의 모든 멤버 변수에 개별적으로 접근할 수 있습니다.
- 예:
PlayerInfo
구조체를 Break하면 hp
, exp
, speed
값에 따로 접근 가능합니다.
3) Make Structure 노드
- 구조체의 값을 새롭게 설정하고 하나의 구조체로 반환합니다.
- 예:
Make Transform
노드는 x, y, z 좌표를 묶어 Transform 구조체를 생성합니다.
4. 구조체 사용 예제
4.1 구조체 데이터를 출력하기
Player
구조체 변수 생성.
- Break Structure 노드로 구조체 멤버를 분리.
- Format Text 노드를 사용해 구조체의 데이터를 문자열로 출력.
4.2 임시 구조체 만들기
-
이벤트 그래프에서 Make Structure 노드를 생성.
-
원하는 값으로 구조체를 설정합니다.
- 예:
hp = 50
, exp = 10.5
, speed = 500
.
-
SET 노드를 사용해 기존 구조체 변수 값을 임시 구조체 값으로 업데이트합니다.
4.3 구조체 멤버 설정하기
- Set Members in Structure 노드 추가.
- 오른쪽 Detail 패널 → 원하는 멤버 변수에 체크하여 노드에 표시.
- 필요에 따라 특정 멤버 변수만 값을 설정합니다.
4.4 구조체 멤버 값 계산하기
- 구조체를 Break Structure로 분해하여 각 멤버 변수에 접근.
- 멤버 변수 간 연산(OR, AND 등)을 수행합니다.
- 예:
hp
와 speed
를 Boolean OR 연산으로 처리.
- 결과 값을 다시 Set Members in Structure를 통해 구조체 변수에 업데이트.
5. 구조체 활용 사례
-
플레이어 정보 관리:
hp
, exp
, speed
등을 묶어 관리하여 코드의 가독성과 유지보수성을 높입니다.
-
아이템 시스템:
- 아이템의 이름, 유형, 공격력, 무게 등을 하나의 구조체에 저장하여 관리.
-
위치 및 트랜스폼 데이터:
Make Transform
, Break Transform
노드를 통해 위치, 회전, 크기 데이터를 관리.
-
UI 시스템:
- 구조체를 사용해 체력 바, 경험치, 속도 등의 UI 데이터를 한 번에 업데이트.
6. 구조체의 장점
-
데이터 관리 용이:
- 여러 개의 변수를 묶어서 관리할 수 있어 코드가 간결해집니다.
-
유지보수성:
- 구조체 변수의 타입만 변경하면 관련된 모든 변수에 적용됩니다.
-
유연성:
- 필요에 따라 Break, Make, Set Members 노드를 사용해 유연하게 데이터를 관리할 수 있습니다.
-
성능 최적화:
- 복사 방식으로 동작하므로 데이터 처리 시 성능적으로 효율적입니다.