Unreal Engine/C++

[Unreal Engine 4 C++] 클래스 레퍼런스를 인자로 받기

한돌이 2021. 4. 13. 15:11

 다른 타입의 변수들과 달리 오브젝트 타입의 변수는 변수 안에 값이 직접들어 있는 것이 아닌 실제 오브젝트를 참조(레퍼런스)하는 변수입니다.

 그 중 오브젝트 레퍼런스는 오브젝트를 참조하는 변수, 클래스 레퍼런스는 클래스를 참조하는 변수라고 생각하면 됩니다.

 

<클래스 레퍼런스를 인자로 받는 함수(상), 오브젝트 레퍼런스를 인자로 받는 함수(하)>

 블루프린트에서 함수를 사용할 경우 오브젝트 레퍼런스를 인자로 받는 함수는 오브젝트 레퍼런스로 선언된 변수를 받아야 하지만

<APCEWeaponBase의 클래스 레퍼런스를 인자로 받는 함수>

 클래스 레퍼런스를 인자로 받는 함수는 위의 사진과 같이 클래스를 지정하여 사용할 수 있습니다.

 

void AddWeaponToInventory(class APCEWeaponBase* Weapon);

 평소에 포인터로 인자를 받는 오브젝트 레퍼런스를 사용하는 함수의 경우 위와 같이 작성하지만 클래스 레퍼런스의 경우 다음과 같이 작성합니다.

 

void AddWeaponToInventory(TSubclassOf<class APCEWeaponBase> Weapon);

 그리고 클래스 레퍼런스를 받은 경우 이 클래스 안의 변수나 함수를 사용할때는 .GetDefaultObject() 함수를 사용해야 클래스 안의 변수나 함수를 사용할 수 있습니다.

 

Weapon.GetDefaultObject()->OnAttackTrace();