3. 01
1) 왜 이 주제를 선정했나?
2) 그래서 준비했습니다~!
이전에 스터디에서 언급 됬던 내용
• 데이터는 코드에 있는게 아닌 엑셀에 있다고 했다.
• 그러면 구현 방법에 대해서도 얘기해보면 좋을 것 같다.
포트폴리오에 활용을 해보자!
• 더 이상의 하드 코딩은 NO!
• 데이터를 불러와서 사용하는 것에 익숙해지도록 하자!
U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance
4. 하는 일
01
1) Game Instance란?
“게임이 동작하는 프로그램”
목표
Game Instance를 활용해 캐릭터의 정보를 저장하고 활용해보자.
간단히 게임 그 자체를 의미한다.
1. 실행중인 게임의 인스턴스를 위한 고수준 관리자 개체.
2. Level이 전환되더라도 공유할 수 있는 데이터를 저장할
수 있는 전역 개체.
U n r e a l E n g i n e G a m e I n s t a n c e
Unreal Engine
GameInstance
5. 01
[ 오늘의 내용 ]
• GameInstance를 통한 캐릭터의 능력치 설정
GameInstance 생
성
• 각각의 Row에 캐릭터에게 부여할 능력치의
값을 저장
CSV 파일 생성
• 불러온 데이터를 저장할 구조체 생성구조체 생성
• Actor와 분리해 유지보수에 용이하게 설계
ActorComponent
활용
U n r e a l E n g i n e G a m e I n s t a n c e
12. 03
U n r e a l E n g i n e G a m e I n s t a n c e
CSV 파일 생성 및 저장
13. U n r e a l E n g i n e G a m e I n s t a n c e
14. U n r e a l E n g i n e G a m e I n s t a n c e
15. U n r e a l E n g i n e G a m e I n s t a n c e
16. 03
U n r e a l E n g i n e G a m e I n s t a n c e
구조체 정의
17. U n r e a l E n g i n e G a m e I n s t a n c e
18. U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance 생성(DRUGameInstance.cpp)
DataTable에 저장된 정보는 FindRow를 통해 데이터를 얻어옴.
FindRow(FName RowName, const TCHAR* ContextString);
RowName : 위에 정의한 테이블의 Name을 이용해 Row Data를 가져옴.
ContextString : FindRow에 실패했을 경우 언리얼에서 띄워주는 Warning
에 표시할 텍스트 정보.
19. U n r e a l E n g i n e G a m e I n s t a n c e
20. U n r e a l E n g i n e G a m e I n s t a n c e
21. 01
Data Table
• Ustruct와 그 변수에 1:1 매핑되는 열 이름으로 구성
• FTableRowBase를 상속받아야 한다.
Data Curve
• Data Table과 유사하지만, 부동 소수점 유형만 지원
• 부동소수점 실수를 통한 보간에 특화되어 있음.
• 밸런싱, 아이템 배분, 기술이나 능력에 대한 특성 조절에 유용.
U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance
22. U n r e a l E n g i n e G a m e I n s t a n c e
23. 03
U n r e a l E n g i n e G a m e I n s t a n c e
Actor Component 추가
24. 02
1) Actor Component를 사용하는 이유
Game Instance
① 캐릭터의로직과캐릭터정보에대한로직의분리
② 유지보수에용이하게하기위해서.
③ SRP의원칙을준수하자.
④ LifeCycle 상Actor보다Actor Component가 초기화가더빠르다.
U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요
MINHEEBLOG
25. U n r e a l E n g i n e G a m e I n s t a n c e
26. U n r e a l E n g i n e G a m e I n s t a n c e
CharacterStatComponent 생성
(CharacterStatComponent.h)
27. 02
1) Transient 프로퍼티 지정자
Game Instance
① 언리얼오브젝트에는Serialzation 기능이있어서UPROPERTY 속성을저장하고로드할수있다.
② 하지만이키워드를사용한프로퍼티는휘발성데이터로지정됨.
③ 프로퍼티에대한저장또는로드를지원하지않음.
③ CurrentHp와 같은시시각각변동해야하는데이터의경우저장을해둘이유는없음.
U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요
28. U n r e a l E n g i n e G a m e I n s t a n c e
Actor의
PostInitializeComponents에
대응되는 InitializeComponent
함수.
사용하기 위해선 생성자에서
bWantsInitializeComponent
값을 true로 설정
29. U n r e a l E n g i n e G a m e I n s t a n c e
CharacterStatComponent 선언 (MyCharacter.h)
30. U n r e a l E n g i n e G a m e I n s t a n c e
Hp HUD 위젯 생성 후 캐릭터의 정보를 토대로 표현 (MyCharacter.cpp)
31. U n r e a l E n g i n e G a m e I n s t a n c e
실행해서 로그를 확인해보면 데이터를 확인해 볼 수 있습니다.
32. U n r e a l E n g i n e G a m e I n s t a n c e
THANK
YOU
33. U n r e a l E n g i n e G a m e I n s t a n c e
Q & A