Unreal Engine GAS(Gameplay Ability System) 심화LESSON 32
Gameplay Cue로 VFX와 SFX 표현 분리하기
난이도심화
예상 시간180분
선수지식31강의 서버 검증 타기팅
32강. Gameplay Cue로 VFX와 SFX 표현 분리하기
1. 이번 강의에서 해결할 문제
데미지 코드에서 파티클과 사운드를 직접 재생하면 전용 서버가 표현 에셋을 알게 되고, 지속 효과의 시작·반복·종료 정리가 흩어집니다. Gameplay Cue는 판정과 표현을 나누지만 상태의 진실을 저장하는 장치는 아닙니다.
2. 학습 목표
3. 핵심 개념
Instant 충격처럼 한 번 실행되는 표현은 UGameplayCueNotify_Static, 반복·종료 수명이 필요한 오라나 루프 사운드는 AGameplayCueNotify_Actor가 어울립니다. Cue는 OnExecute, OnActive, WhileActive, OnRemove 이벤트를 받으며, 필요한 위치·크기·Instigator 정보는 FGameplayCueParameters나 Effect Context로 전달합니다.
4. 구현
GCN_HitImpact.h
UCLASS()
class GASCOURSE_API UGCN_HitImpact : public UGameplayCueNotify_Static
{
GENERATED_BODY()
public:
virtual bool OnExecute_Implementation(
AActor* MyTarget,
const FGameplayCueParameters& Parameters) const override;
private:
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UNiagaraSystem> ImpactVFX;
};
GCN_HitImpact.cpp
bool UGCN_HitImpact::OnExecute_Implementation(
AActor* MyTarget, const FGameplayCueParameters& Parameters) const
{
if (!IsValid(MyTarget) || MyTarget->GetNetMode() == NM_DedicatedServer)
{
return false;
}
const FVector Location = Parameters.Location.IsNearlyZero()
? MyTarget->GetActorLocation() : FVector(Parameters.Location);
UNiagaraFunctionLibrary::SpawnSystemAtLocation(MyTarget, ImpactVFX, Location);
return true;
}
GE_Damage의 Cue Tag를 GameplayCue.Combat.Hit로 두거나 ASC에서 Cue를 실행합니다. 전용 서버에서는 렌더링·오디오를 만들지 않으며, Cue 에셋 경로와 Gameplay Cue Manager 스캔 경로가 프로젝트 설정에 포함됐는지 확인합니다.
5. 코드가 동작하는 이유
서버의 Effect 적용은 Attribute와 Tag라는 게임 상태를 만들고, 각 클라이언트는 Cue로 자신의 화면에 맞는 표현을 재생합니다. 따라서 VFX 누락이 전투 판정을 바꾸지 않고, 저사양 클라이언트가 표현 품질을 낮춰도 규칙은 같습니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Gameplay Cue로 VFX와 SFX 표현 분리하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
32강. Gameplay Cue로 VFX와 SFX 표현 분리하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.