곰바닥
코딩공방
곰바닥
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • 유니티 (1)
    • DirectX (14)
      • 던파 모작 개발일지 (7)
      • 공부 내용 (7)
    • 언리얼 (13)
      • 엔진 공부 (5)
      • 이득우 네트워크 멀티플레이 (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유니티
  • 고
  • directx
  • 개발일지
  • 개발 일지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
곰바닥

코딩공방

언리얼/엔진 공부

Unreal Engine 5 - 델리게이트

2023. 2. 22. 17:19

개요

보스 몬스터와 부하 몬스터가 있다고 생각해보자.

보스가 버프를 사용하면 부하의 공격력이 증가하고

보스가 죽으면 부하도 죽는 코드를 구현해보자.

 

델리게이트 X

<hide/>
class Boss
{
public:
    bool IsUsingBuff = false;
    bool IsDie = false;
};


class Servant //부하
{
public:
    void BossBuffCheck(Boss boss)
    {
        if (boss.IsUsingBuff == true)
        {
            AtkUP();
        }
    }

    void BossDieCheck(Boss boss)
    {
        if (boss.IsDie == true)
        {
            Suicide();
        }
    }

    void AtkUP()
    {
        //중복 호출 방지
        
        //공격력 증가
    }

    void Suicide()
    {
        //중복 호출 방지

        //자살
    }
};

 

위 코드는 Update문에서 부하의 BossBuffCheck와 BossDieCheck를 통해 보스의 상태를 계속 체크해야 한다.

매우 비효율적이다.

보스가 버프를 사용하거나 죽는 이벤트 때 부하의 AtkUp나 Suicide가 자동으로 호출되면 좋을 것이다.

이럴 때 사용하는 것이 델리게이트다.

 

 

델리게이트 O

<hide/>
class Boss
{
public:
    delegate OnBossUseBuff; //보스가 버프를 사용함
    delegate OnBossDie; // 보스가 죽음

    //내부 로직    
};


class Servant //부하
{
public:
    Servant(Boss boss)
    {
        boss.OnBossUseBuff(this, &Servant::AtkUP); //보스가 버프를 사용할 때 AtkUP 호출
        boss.OnBossDie(this, &Servant::Suicide); //보스가 죽으면 Suicide 호출
    }

    void AtkUP()
    {     
        //공격력 증가
    }

    void Suicide()
    {
        //자살
    }
};

 

Unreal Engine 5 - Delegate vs Dynamic Delegate

Delegate

델리게이트 선언 

DECLARE_DELEGATE

 

함수 등록 

AddUObject(객체, 함수 이름)

AddLambda


Dynamic Delegate

델리게이트 선언 

DECLARE_DYNAMIC_DELEGATE

 

함수 등록 

AddDynamic(객체, 함수 이름)

등록하는 함수는 반드시 UFUNCTION 매크로를 사용해야 한다. - 따라서 람다식 사용이 불가능하다.

 

'언리얼 > 엔진 공부' 카테고리의 다른 글

Unreal Engine 5 - WeaponBox 구조  (0) 2023.03.10
Unreal Engine 5 - MakeFrom 축  (0) 2023.02.23
Unreal Engine 5 - 콜리전  (1) 2023.02.23
Unreal Engine 5 - 애니메이션 몽타주  (0) 2023.02.23
    '언리얼/엔진 공부' 카테고리의 다른 글
    • Unreal Engine 5 - WeaponBox 구조
    • Unreal Engine 5 - MakeFrom 축
    • Unreal Engine 5 - 콜리전
    • Unreal Engine 5 - 애니메이션 몽타주
    곰바닥
    곰바닥

    티스토리툴바