Unreal GAS (2) - Interface, 하이라이트 (CustomStencil)

wnsduf0000·2025년 12월 1일

Unreal_GAS

목록 보기
2/34
  • Interface
    • 인터페이스 가상 함수 선언 시, 함수 내용을 정의하는 것이 번거로울 때가 있다.

      // 가상 함수를 선언할 때 아래와 같이 작성하면 순수 가상 함수가 되어 내용을 작성할 필요가 없다.
      virtual void Hightlight() = 0;
      virtual void UnHighlight() = 0;
  • TScriptInterface
    • 인터페이스 변수를 담기 위한 템플릿 래퍼.

    • 예를 들어, IEnemyInterface 변수를 담기 위해서는 아래와 같이 하면 된다.

      // 포인터를 사용하여 인터페이스 변수를 직접 선언하기보다는
      IEnemyInterface* EnemyInterface;
      CurrentTarget = Cast<IEnemyInterface>(HitResult.GetActor());
      
      // TScriptInterface<T>를 사용하여 인터페이스 변수를 담으면 된다.
      // TScriptInterface<T>를 사용하면 알아서 대입된 클래스에 대한 형변환을 진행해준다.
      TScriptInterface<IEnemyInterface> EnemyInterface;
      CurrentTarget = HitResult.GetActor();
      
      // TScriptInterface<T>에서 T로 주어진 인터페이스를 얻어오려면 GetInterface()를 사용한다.
      CurrentTarget.GetInterface()->Highlight();
  • 커서 아래의 몬스터 하이라이트 표시
    • Aura 프로젝트에서는 포스트 프로세스 볼륨을 이용한 하이라이트를 사용함.

    • 레벨 상에 포스트 프로세스 볼륨 배치 후, 무한 바운드 및 하이라이트용 매터리얼을 설정함.

    • 하이라이트용 매터리얼은 CustomStencil을 사용하기 때문에,
      프로젝트 세팅에서 엔진-렌더링의 ‘커스텀 뎁스-스탠실 패스’를 Enabled with Stencil로 설정.

    • 하이라이트 표시를 할 메시, 즉 여기서는 몬스터의 메시에서 ‘커스텀 뎁스 패스 렌더’를 설정하면
      하이라이트가 적용되는 것을 확인할 수 있음.
      하이라이트용 매터리얼의 커스텀 깊이 스텐실 값이 250이므로, 값 또한 알맞게 설정해주어야 함.

      // 블루프린트에서 메시 컴포넌트의 ‘SetRenderCustomDepth’ 노드로도 설정 가능함.
      GetMesh()->SetRenderCustomDepth(true);
      GetMesh()->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
      
      // SetRenderCustomDepth의 값을 변경하는 것으로 하이라이트를 켜거나 끌 수 있음.
      GetMesh()->SetRenderCustomDepth(false);
profile
저는 게임 개발자로 일하고 싶어요

0개의 댓글