- 개요
ASC를 사용하는 경우에 ASC를 실질적으로 소유하고 설정하는 주체인 Owner Actor와
ASC를 통해 보여지는 효과만을 연출하는 주체인 Avatar Actor를 설정할 필요가 있다
AbilityActorInfo를 설정하는 작업은 ASC의 InitAbilityActorInfo 함수를 호출함으로써 이뤄진다
이때 ASC를 갖고 있는 주체가 무엇인지에 따라 해당 함수를 호출하는 시점이 달라진다
1) AI가 컨트롤 - ASC는 Pawn에 의해 소유

AI가 컨트롤하는 경우에 ASC는 Pawn이 소유하고 있고,
서버와 클라이언트 모두 BeginPlay 함수에서 InitAbilityActorInfo 함수를 호출하여
OwnerActor와 AvatarActor를 설정하면 된다
2) 플레이어가 컨트롤 - ASC를 Pawn이 소유한 경우

플레이어가 컨트롤하는 경우, 그리고 ASC가 Pawn에 의해 소유된 경우에는
서버는 PossessedBy 함수 안에서 InitAbilityActorInfo 함수를 호출하고
클라이언트는 서버의 Possess가 완료된 Pawn을 설정하는 AcknowledgePossession 함수 안에서 호출한다
만약, 2)의 상황에서 Replication 모드를 Mixed로 설정하여 사용하는 경우
ASC를 소유한 Pawn에서 SetOwner 함수를 호출하여 Owner를 반드시 PlayerController로 설정해야 한다
3) 플레이어가 컨트롤 - ASC를 PlayerState가 소유한 경우

플레이어가 컨트롤하는 경우, 그리고 ASC가 PlayerState에 의해 소유된 경우에는
서버는 2)의 경우와 동일하게 PossessedBy 함수 안에서 InitAbilityActorInfo 함수를 호출하고
클라이언트는 서버가 PlayerState의 정보를 클라이언트와 동기화하는 OnRep_PlayerState 함수 안에서 호출한다
1) AuraCharacterBase 클래스


조상 캐릭터 클래스에 InitAbilityActorInfo 함수를 추가하여
자식 클래스들에서 해당 함수를 오버라이드하여 OwnerActor와 AvatarActor를 설정하도록 한다
2) AuraEnemy 클래스

적 캐릭터 클래스에 InitAbilityActorInfo 함수를 추가하고 오버라이드한다


BeginPlay 함수에서 오버라이드한 InitAbilityActorInfo 함수를 호출하여
적 캐릭터가 소유한 ASC의 OwnerActor와 AvatarActor를 설정한다
3) AuraCharacter 클래스


서버에서 ASC의 OwnerActor와 AvatarActor를 설정하는 PossessedBy 함수를 추가하고,
클라이언트에서 동일한 동작을 수행하기 위한 OnRep_PlayerState 함수를 추가한다


플레이어 캐릭터의 경우, 적과는 다르게 Owner는 PlayerState이고 Avatar는 Character이다
따라서 InitAbilityActorInfo 함수에서 PlayerState를 가져오고
가져온 PlayerState로부터 ASC를 가져와 InitAbilityActorInfo 함수를 호출하여 Owner와 Avatar를 설정한다
이어서 ASC와 AttributeSet 역시 PlayerState로부터 가져와 설정한다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| RPG 게임 UI - 1) UI의 설계와 HUD 구성 (0) | 2025.07.07 |
|---|---|
| 간단한 어트리뷰트 설정 - 최종) 어트리뷰트 추가 및 간단한 테스트 (0) | 2025.07.04 |
| GAS 프레임워크 도입 - 2) Replication 모드 설정 (0) | 2025.06.29 |
| GAS 프레임워크 도입 - 1) ASC와 AttributeSet 추가 및 설정 (0) | 2025.06.29 |
| 프로젝트 설정 - 최종) 프로젝트 세부 설정 (0) | 2025.06.27 |