unreal-engine4 - 在 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 实例的正确方法是什么?
解决方案
解决方案是使用static_cast:
FOnlineSubsystemSteam* oss = static_cast<FOnlineSubsystemSteam*>(ossBase);
这个有效。使用 UE4 Cast 似乎很明显,但在这种情况下它不起作用。
推荐阅读
- javascript - Express JS 中的 POST 函数
- typescript - Intersection not merging enums for property
- vba - 用户输入编辑宏以调整 Excel 排序
- python - PyGame pygame.sprite.collide_mask 没有检测到碰撞?
- javascript - 带有scrollTop的动画div在滚动页面中丢失动画
- python - 将参数替换为语句
- json - JSON - WepAPI - 解析值时遇到意外字符
- r - Sparklyr:尝试使用外部变量作为索引访问存储在列中的向量的元素
- bootstrap-4 - Bootstrap 视频轮播不会自动付款
- java - 如何在 AndroidStudio 项目中添加和使用 AAR