※ 개인적인 공부를 위해 포스팅 하는 글입니다.
# AbilitySystemComponent
ㆍ 얘는 매니저 클래스 느낌으로 사용하면 된다.
ㆍ 즉 저번 포스팅은 스킬 매니저 오늘은 스탯 매니저를 만든다고 생각하면된다.
▶ Attribute
ㆍ 스텟에 관련된걸 관리하는거라 생각하면 된다, (직역 : 속성, 특성, 특질)
# 사용하는 이유?
ㆍ 지금은 Character 클래스에서 스텟을 관리해주고 있다.
ㆍ rpg에선 스텟의 종류도 엄청 많겠다.... 또한 아이템으로 인해 스텟도 주기적으로 변하고 버프가 있을수도 있고... 무언가 처리할 코드가 많아진다.
ㆍ Character클래스에서 다른 기능과 함께 하나로 관리해주는 구조보단, Attribute를 이용해 따로 관리해 주는게 유지보수 측면에서 편리하겠다.
#클래스 생성
ㆍ 베이스 클래스의 상속을 받아 만들어주고..
#아래 파생클래스를 만들어 주는 구조로 작성 가능하다.
ㆍ 공용적인 스텟 부분은 묶어두고 아래 상속구조로 설계하면 되겠다.
→ 지금은 테스트용 실습 프로젝트라 세부적으로 정의할건 없으니 구조만 짜두고 AttributeSet 클래스에서 관리하자
# AttributeSet 클래스 넓게 보면 이렇다.
#하나씩 분석해보자
ㆍ 헤더를 가져오고 매크로를 정의한다. 타고 들어가보면 겟셋,인잇 등 객체지향에 필요한 프로퍼티 코드들이 정의되어있다
ㆍ 게임에서 필요할만한 스텟에 관련된걸 지금 한번 정의해 봤다.
ㆍ FGameplayAttributeData는 그냥 타고들어가서 보면 flaot인걸 볼 수 있다.
ㆍ 접근제어 지시지가 private기 때문에 뒤에 meta = (AllowPrivateAccess = "true")를 해줬다.
ㆍ 이 키워드 붙혀줘야 BP에서 오류가 안난다.이거싫으면 접근제어지시자 protected로 하자
ㆍ 매크로들과 만든 스텟을 바인드해주는 부분이다.
ㆍ 전처리기 매크로로 인해 get set 이런거 안만들어도 다 처리가 된다.
# 플레이어와 몬스터에 연동하기
# Character 클래스에서 AttributeSet불러오기
ㆍ Player는 PlayerState에서 스텟을 관리하니 거기서 해주면 되겠고, 몬스터는 바로 하면되겠다.
1. 몬스터
2. PlayerState
→ Player로 연동해야 되니
ㆍ 이렇게 연동하면 된다.
# 이제 캐릭터에서 스텟 관리하는 부분을 치워주고 그에 맞는 오류들도 해결해 보자
ㆍ 겟셋 직접 만들지 않아도 돼서 매우 편리하다.
ㆍ 이거 설정 꼐속 지혼자 바뀔때가 있는데,, 이런거 싫으면 Gamemode 클래스에서 코드로 박아두자.
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
GameplayAbilitySystem - Ability (0) | 2024.10.31 |
---|---|
GameplayAbilitySystem - Effect (0) | 2024.10.30 |
GameAbilitySystem 이론과 초기 세팅 (3) | 2024.10.29 |
Inventory - 아이템 DragAndDrop (0) | 2024.10.29 |
Inventory - 아이템창에 아이템 구성해보기 (1) | 2024.10.27 |