Unreal Engine/게임클래스 - 언리얼엔진 기초

[27강] Player Combo - 1

whereareyoung 2024. 6. 16. 11:00

언리얼에 CSV 데이터시트 불러오기 

1. "Plyaer" 폴더에 블루프린트 > 구조체 "FComboTable" 생성

* 구조체 : 변수들을 묶어서 다시 변수 취급해줄수 있도록 하는 기능 

 

2. CSV 파일의 변수이름을 참고하여 다음과 같이 생성 

- AnimMontage형 "Montage"  

- Float형 "PlayRate"

- Name형 "StartSectionName"

- Boolean형 "CanMove"

 

* 자료형 

Name : 이름을 지정할 때 사용(대소문자 구분 없음)

String : 글자 두자 이상의 문자열을 변수로 다룰 때 사용

Text : 현지화 가능 텍스트(잘 사용하지는 않음)

 

3. Player > 데이터 테이블 임포트 

1) 임포트 > 이전에 넣어두었던 파일 찾기 

 

2) 

임포트 > 데이터 테이블 CSV 파일 선택 > 임포트 대상 "Data Table" 선택

Curve Table : 숫자들을 단순히 0부터 1까지 처리하는 것이 아니라 0.5구간에 얼마를 틀고, 0.9 구간에 얼마를 틀고, 이런식으로 진행

 

* 컴퓨터에서 CSV 파일을 연 상태에서 임포트 하면 다음과 같은 오류가 뜸. 창을 닫은 상태에서 진행하여야 함 

 

4. 임포트한 데이터 테이블 확인 

 

플레이어 콤보 작업

1. 작업 전 노드정리 

    1) BP_Player > 이전에 작업했던 내용을 다음과 같이 접어 놓는다 > "Attacking Event"

 

     2) BeginPlay > 실행노드 끊기, 다음 박스 노드접기 >  "Spawn&Attach"

 

    3) Spawn & Attach 노드 안에 입력핀 "Input" 만들기 

 

    4) "BeginPlay" 노드로 돌아와 시퀀스 생성, 다음과 같이 연결

 

2. FComboTable형 "SwordComboDatas" 변수 생성, 배열으로 생성

ComboTable 이 구조체이기 때문에 접두에 "F" 를 붙여준것인데, 기능상 안 써주어도 상관은 없으나 명시적으로 써주는 것이 좋음 

기능상 배열으로 생성

 

* 접두사 : 자료형의 앞에 붙어야 하는 문자 

C쪽에는 지본적으로 붙어서 나오는데, 언리얼 에디터에서는 대부분 제거되어 보이나 제거를 안하고 쓰는 경우가 두가지 정도 있다.

- 구조체("F"로 시작)

- 열거형("E"로 시작)

 

3. Get Data Table Row Names 함수 생성 및 테스트 진행

1) 함수 생성

 

2) 테스트 진행

데이터 시트상 열이름과 횡이름은 다음과 같기 때문에 위와 같이 처리하면 다음과 같이 횡이름이 Return 이 된다. 

For Each Loop : 배열을 하나씩 가져올때 사용 

 

* 임포트 한 데이터 시트 내용 

 

정상적으로 데이터 시트 데이터가 입력이 된다는 것을 확인했으므로, 이를 기반으로 이름을 가지고 데이터들을 불러 저장 후 사용할 것이다. 

 

4. "데이터 테이블 행 _ 구하기" 함수를 불러온다  

다음과 같이 세팅한다. Row Name 에 1, 2, 3 이 다음과 같이 들어와 있는 것을 확인할 수 있다. 

 

다음과 같이 연결해주면 행1, 2, 3 순서대로 나오게 될텐데 행을 못 찾을 일은 없다. 

그래서 행 찾음 일때 데이터를 다음과 같이 연결해 주면 변수에 데이터가 들어올 것이다. 

 

Loop가 다 돌고나면 "For Each Loop" 의 Completed 로 나옵니다

 

불러온 데이터 값 중간점검

1) Get "Sword Combo Datas"

2) 참조로 Get 가져옴 

* 주의 : Get 사본, 참조

일반적으로 복사가 일어나면 메모리가 추가되기 때문에 참조를 많이 사용하고, 이 방식은 원본 값이 변합니다.

원본이 유지되어야 하고 변경되지 않아야 하는 경우에는 메모리 로스에도 불구하고 사본으로 씁니다. 

 

3) Break 키워드로 FComboTable 분해 or 핀분할 후 출력 테스트 

- 분해의 경우

- 핀분할의 경우  

 

* 지금 생성한 구조체를 늘리면 다음과 같다. 정해진 변수대로 한꺼번에 생성된다. 

테스트 결과 입력 내용이 잘 출력되는 것을 확인할 수 있다. 

 

5. 노드 정리

잘 불려오는것을 확인했으니, 테스트 부분은 끊고 이부분 노드를 접어놓는다. "Load Sword Combo Table"

 

콤보를 만드는 것과 콤보가 어떻게 동작을 해야하는지, 어떻게 자연스럽게 만들어야 하는지 등은 다음시간에 다룰 예정이다.

오늘은 휴일이라 천천히 쉬면서 공부를 하면서 보낼 예정인데, 페이커 전시회 마지막 날이라 방문 후 저녁에 이어서 작업할까 생각중이다. 

(라이엇 게임즈는 오늘(29일)부터 6월 16일(일)까지 하이커 그라운드(HiKR GROUND, 서울시 중구 소재)에서 '페이커 신전'을 운영한다.) 

 

곧 있을 전시회와 오늘 할 작업 모두 기대가 된다! 

 

'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글

[29강] Player Combo - 3  (1) 2024.06.30
[28강] Player Combo - 2  (0) 2024.06.25
[26강] Damaged Enemy - 4  (0) 2024.06.10
[25강] Damaged Enemy - 3  (1) 2024.06.06
[24강] Damaged Enemy - 2  (1) 2024.06.06