我们通过Steam访问线上服务不知道怎么配置的可以看我的另一篇 [UE /虚幻 Steam配置]

配置完成后在角色类的头文件中添加一个变量用于存储获取到的会话接口

1
2
3
4
5
6
public:
// 指向在线会话接口的指针
// #include "Interfaces/OnlineSessionInterface.h" 添加头文件
IOnlineSessionPtr OnlineSessionInterface;
// IOnlineSessionPtr 就是 TSharedPtr<class IOnlineSession, ESPMode::ThreadSafe>
// TSharedPtr<class IOnlineSession, ESPMode::ThreadSafe> OnlineSessionInterface;

然后在角色类的构造函数中获取到在线子系统,并通过在线子系统获取会话接口,然后打印出在线子系统的名称

1
2
3
4
5
6
7
8
9
10
// #include "OnlineSubsystem.h"
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get();
if (OnlineSubsystem)
{
OnlineSessionInterface = OnlineSubsystem->GetSessionInterface();
if (GEngine) {
GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red,
FString::Printf(TEXT("Found Subsystem %s"), *OnlineSubsystem->GetSubsystemName().ToString()));
}
}

直接利用UE编译器运行,无论使用那种运行方式,发现打印显示都为NULL

这不是NULL指针,而是虚幻中有一个名为NULL的在线子系统,它是为陆地连接设计的,所以我们可以通过陆地连接测试在线子系统

结果显示:
Found Subsystem NULL

我们将项目打包运行,发现这时,打印显示为Steam连接,并且右下角有Steam弹窗,这表示我们已经找到了Stea在线子系统

结果显示:
Found Subsystem Steam