Я создал класс, который подаю в 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;
}