Функция Steamworks API CallResult не работает в Unreal Engine / C ++ - PullRequest
0 голосов
/ 29 апреля 2020

Я создал класс, который подаю в UFUNCTION. По какой-то причине я не могу вызвать функцию OnLobbyMatchList (синяя строка для отладочной печати не отображается).

Любая помощь приветствуется. Я признаю, что мои знания о обратных вызовах / callresults действительно ограничены. Я еще не дошел до этой главы о C ++ для чайников.

<header>
class CLobbyListManager
{

public:

    CCallResult< CLobbyListManager, LobbyMatchList_t > m_CallResultLobbyMatchList;

    int32 result = 0;

    void FindLobbies()
    {
        //SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList()
        GEngine->AddOnScreenDebugMessage(-1, 20.f, FColor::Red, TEXT("Running FindLobbies")); //Debug Logging.
        SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList();
        m_CallResultLobbyMatchList.Set(hSteamAPICall, this, &CLobbyListManager::OnLobbyMatchList); //Doesn't this line call the OnLobbyMatchList function on async complete?
    }

    void OnLobbyMatchList(LobbyMatchList_t *pLobbyMatchList, bool bIOFailure) //Not being called for some reason.
    {
        // lobby list has been retrieved from Steam back-end, use results

        GEngine->AddOnScreenDebugMessage(-1, 20.f, FColor::Blue, TEXT("Running OnLobbyMatchList")); //Debug Logging.
    }
};
<source>
int32 USteamFunctionLibrary::GetSteamLobbyList()
{
    CLobbyListManager LobbyManager;
    GEngine->AddOnScreenDebugMessage(-1, 20.f, FColor::Green, TEXT("Running GetSteamLobbyList")); //Debug logging
    LobbyManager.FindLobbies();
    return LobbyManager.result //Just returning 0 at this point;
}
...