Object를 담을 경우 UPROPERTY()를 써야한다. 내부적으로 TSharedPtr을 사용하기 때문에
원시포인트를 넣지 않고 스마트포인트를 쓸 경우 gc에러가 발생한다.
add는 index를 반환한다.
push는 reference를 반환한다.
Delegate패턴은 기능을 위임하는 Delegate를 지정하는 디자인 패턴으로 두 클래스 간 의존성을 줄이고, 기능추가에 따른 코드 변경이 적어지며 언리얼 엔진에서는 이벤트 기반의 구조 설계까지 하는 디자인 패턴이다.
언리얼에서 Delegate 사용법은 어렵지 않다.

위 표는 선언한 함수별 매크로를 정리해 놓은 것이다. 매개변수가 하나면 DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
기능을 가지고 올 클래스
UCLASS()
class YourClass1
{
public:
void func(Param);
};
기능을 확장할 클래스
DECLARE_DELEGATE_OneParam(Name, Param);
UCLASS()
class YourClass2
{
public:
Name delegate
};
위처럼 설정이 되어있다면 bind만 하면 된다.
// YourClass1 에서 작업한다면
auto ptr = new YourClass2()
ptr->delegate.BindUObject(this, YourClass1::func);
사용은 다음과 같다.
delegate.ExecuteIfBound(Param);
GetWorld()->GetTimerManager().SetTimer(SpiralSpeedTimer,
this, &ASpiralActor::SetRandomSpiralSpeed,5.f,true);