본문으로 건너뛰기
Unreal Engine GAS(Gameplay Ability System) 심화LESSON 15

Instancing Policy와 Ability 객체의 상태 관리

난이도심화
예상 시간125분
선수지식14강의 Ability 생명주기

15강. Instancing Policy와 Ability 객체의 상태 관리

1. 이번 강의에서 해결할 문제​

NonInstanced Ability에 현재 Target이나 Task Handle을 멤버로 저장하면 CDO 공유 상태가 되어 플레이어 간 값이 섞일 수 있습니다. PerExecution을 무조건 사용하면 인스턴스 생성과 동시 실행 관리가 늘어납니다.

2. 학습 목표​

3. 핵심 개념​

정책인스턴스적합한 용도
NonInstancedCDO 공유상태 없는 즉시 실행
InstancedPerActorSpec당 Actor별 인스턴스대부분의 지속·Task Ability
InstancedPerExecution활성화마다 인스턴스같은 Ability의 동시 실행

정확한 정책 지원과 제약은 사용하는 엔진의 UGameplayAbility Header를 확인합니다.

4. 구현​

GASGameplayAbility.cpp
UGASGameplayAbility::UGASGameplayAbility()
{
InstancingPolicy =
EGameplayAbilityInstancingPolicy::InstancedPerActor;
NetExecutionPolicy =
EGameplayAbilityNetExecutionPolicy::LocalPredicted;
}

PerActor Ability의 CurrentTargetData는 활성화 시작에 초기화하고 End·Cancel에서 Clear합니다. Ability 전역 설정은 EditDefaultsOnly로 두고 실행 상태와 구분합니다.

상태 정리
void UGASGameplayAbility::ResetActivationState()
{
CachedTargetData.Clear();
ActiveTask = nullptr;
bHitConfirmed = false;
}

5. 코드가 동작하는 이유​

PerActor는 Actor마다 인스턴스가 있으므로 Task Delegate와 캐시를 안전하게 보관하면서 반복 활성화 때 재사용할 수 있습니다. 활성화 사이 상태를 반드시 초기화해야 이전 실행 데이터가 다음 실행으로 넘어가지 않습니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Instancing Policy와 Ability 객체의 상태 관리 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Instancing Policy와 Ability 객체의 상태 관리” 실습을 안전하게 진행하기 위한 판단으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘정책만 바꾸고 네트워크 검증 생략’ 실수를 판단할 때 “Instancing Policy와 Ability 객체의 상태 관리” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

15강. Instancing Policy와 Ability 객체의 상태 관리 미완료 상태