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 노드를 사용해 유연하게 데이터를 관리할 수 있습니다.  
 
 
- 
성능 최적화:  
- 복사 방식으로 동작하므로 데이터 처리 시 성능적으로 효율적입니다.