1. 구조체(Structure)란?

구조체는 연관된 여러 데이터 유형을 하나로 묶어 관리하는 데이터 구조입니다.

  • 예시: 위치, 회전, 크기를 포함하는 Transform 구조체.
  • 구조체를 사용하면 여러 변수들을 압축하여 편리하게 관리할 수 있습니다.
  • 일반적으로 데이터의 복사 방식으로 동작하지만, 상황에 따라 참조 방식도 고려해야 합니다.

2. 구조체 생성 및 설정

2.1 구조체 생성

  1. 콘텐츠 브라우저에서 BlueprintsStructure(구조체) 선택.
  2. 구조체의 이름을 설정합니다.
    • 예시: PlayerInfo

2.2 구조체 멤버 변수 추가

  1. 구조체를 더블 클릭하여 상세 페이지로 이동합니다.
  2. Add Variable을 클릭해 멤버 변수를 추가합니다.
    • 예시:
      • hp (Health Points, 타입: Integer)
      • exp (Experience, 타입: Float)
      • speed (타입: Float)

2.3 기본값 설정

  1. 구조체의 각 변수에 기본값을 설정할 수 있습니다.
    • 예: hp = 100, exp = 0, speed = 300.

3. 구조체 사용하기

3.1 구조체 변수 추가

  1. 레벨 블루프린트에서 변수를 생성합니다.
  2. 변수의 데이터 타입을 방금 만든 구조체로 설정합니다.
    • 예: Player라는 변수를 생성하고 타입을 PlayerInfo 구조체로 설정.

3.2 GET/SET 노드 사용

  1. GET 노드: 구조체 변수를 읽어옵니다.
  2. 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 구조체 데이터를 출력하기

  1. Player 구조체 변수 생성.
  2. Break Structure 노드로 구조체 멤버를 분리.
  3. Format Text 노드를 사용해 구조체의 데이터를 문자열로 출력.
    • 예시:
      "Player Stats: HP = {hp}, EXP = {exp}, SPEED = {speed}"

4.2 임시 구조체 만들기

  1. 이벤트 그래프에서 Make Structure 노드를 생성.

  2. 원하는 값으로 구조체를 설정합니다.

    • 예: hp = 50, exp = 10.5, speed = 500.
  3. SET 노드를 사용해 기존 구조체 변수 값을 임시 구조체 값으로 업데이트합니다.


4.3 구조체 멤버 설정하기

  1. Set Members in Structure 노드 추가.
  2. 오른쪽 Detail 패널 → 원하는 멤버 변수에 체크하여 노드에 표시.
  3. 필요에 따라 특정 멤버 변수만 값을 설정합니다.
    • 예: speed만 변경.

4.4 구조체 멤버 값 계산하기

  1. 구조체를 Break Structure로 분해하여 각 멤버 변수에 접근.
  2. 멤버 변수 간 연산(OR, AND 등)을 수행합니다.
    • 예: hpspeed를 Boolean OR 연산으로 처리.
  3. 결과 값을 다시 Set Members in Structure를 통해 구조체 변수에 업데이트.

5. 구조체 활용 사례

  1. 플레이어 정보 관리:

    • hp, exp, speed 등을 묶어 관리하여 코드의 가독성유지보수성을 높입니다.
  2. 아이템 시스템:

    • 아이템의 이름, 유형, 공격력, 무게 등을 하나의 구조체에 저장하여 관리.
  3. 위치 및 트랜스폼 데이터:

    • Make Transform, Break Transform 노드를 통해 위치, 회전, 크기 데이터를 관리.
  4. UI 시스템:

    • 구조체를 사용해 체력 바, 경험치, 속도 등의 UI 데이터를 한 번에 업데이트.

6. 구조체의 장점

  1. 데이터 관리 용이:

    • 여러 개의 변수를 묶어서 관리할 수 있어 코드가 간결해집니다.
  2. 유지보수성:

    • 구조체 변수의 타입만 변경하면 관련된 모든 변수에 적용됩니다.
  3. 유연성:

    • 필요에 따라 Break, Make, Set Members 노드를 사용해 유연하게 데이터를 관리할 수 있습니다.
  4. 성능 최적화:

    • 복사 방식으로 동작하므로 데이터 처리 시 성능적으로 효율적입니다.

profile
李家네_공부방

0개의 댓글