Как я могу реализовать делегатов, таких как System.Action в Unity? - PullRequest
0 голосов
/ 07 марта 2019

.h

DECLARE_DELEGATE(Close);
DECLARE_DELEGATE(OpenFinished);
    Close Action; 
    OpenFinished _OpenFinished;
    UFUNCTION(BlueprintCallable)
    void SetOpen();
    UFUNCTION(BlueprintCallable)
    void SetOpen(const OpenFinished&  _actFinished);

.cpp

void ABaseView::SetOpen()
{
    SetOpen((OpenFinished)nullptr);
}

void ABaseView::SetOpen(const OpenFinished &  _actFinished)
{
    if (!_actFinished.TryGetBoundFunctionName().IsNone())
    {
        _OpenFinished = _actFinished;
        _OpenFinished.ExecuteIfBound();
    }
}

Я делаю это сейчас.

Изменениеобъявление делегата Close и OpenFinished к DECLARE_DYNAMIC_MULTICAST_DELEGATE приводит к ошибке E0077.Я хотел бы сделать его доступным в Blueprint, но делегат продолжает получать сообщение об ошибке.

...