首页 > 解决方案 > 在 C++ 代码中获取 FOnlineSubsystemSteam 实例的正确方法是什么

问题描述

我正在尝试通过以下方式在我的 Unreal Engine 4 项目中获取 Steam 应用程序 ID 和 Steam 用户 ID:

if (SteamAPI_Init())
{
    IOnlineSubsystem* ossBase = IOnlineSubsystem::Get();
    FOnlineSubsystemSteam* oss = Cast<FOnlineSubsystemSteam*>(ossBase);

    if (!oss) {
        printText(TEXT("Steam Subsystem is down!"), FColor::Red.WithAlpha(255));
        return;
    }

    auto SteamID = FString(std::to_string(SteamUser()->GetSteamID().ConvertToUint64()).c_str());
    auto AppID = FString(std::to_string(oss->GetSteamAppId()).c_str());

但不可能将 IOnlineSubsystem 转换为 FOnlineSubsystemSteam。那么获取 FOnlineSubsystemSteam 实例的正确方法是什么?

标签: unreal-engine4steamsteamworks-api

解决方案


解决方案是使用static_cast:

FOnlineSubsystemSteam* oss = static_cast<FOnlineSubsystemSteam*>(ossBase);

这个有效。使用 UE4 Cast 似乎很明显,但在这种情况下它不起作用。


推荐阅读