提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
它是虚幻引擎中管理在线功能的核心框架,支持多种后端服务(如EOS、Steam、Xbox Live等)。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
作用:一个抽象层,统一不同平台的在线服务(如登录、会话、好友、成就等)。
默认支持:Null(本地测试)、EOS、Steam、Xbox Live、PSN等。
配置文件:通过 DefaultEngine.ini 切换不同平台的后端服务。
[OnlineSubsystem]
DefaultPlatformService=Null // 本地测试用
C++ 示例:
#include "OnlineSubsystem.h"
#include "OnlineIdentityInterface.h"
void AMyPlayerController::Login()
{
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
if (OnlineSub)
{
IOnlineIdentityPtr Identity = OnlineSub->GetIdentityInterface();
if (Identity.IsValid())
{
Identity->OnLoginCompleteDelegates->AddUObject(this, &AMyPlayerController::HandleLoginComplete);
Identity->Login(0, FOnlineAccountCredentials("Type", "User", "Password"));
}
}
}
void AMyPlayerController::HandleLoginComplete(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)
{
if (bWasSuccessful) { UE_LOG(LogTemp, Warning, TEXT("登录成功!")); }
}
IOnlineSessionPtr Session = OnlineSub->GetSessionInterface();
if (Session.IsValid())
{
FOnlineSessionSettings Settings;
Settings.bIsLANMatch = false; // 在线会话
Settings.NumPublicConnections = 4; // 最大玩家数
Session->CreateSession(0, "MySession", Settings);
}
在 DefaultEngine.ini 中设置 DefaultPlatformService=Null,无需真实平台账号即可测试功能。
启动两个本地客户端(PIE 或独立进程)模拟多人联机。
在输出日志中过滤 LogOnline,查看在线子系统的调试信息:
UE_LOG(LogOnline, Log, TEXT("Session created!"));
使用 IOnlineFriends 接口获取好友列表:
IOnlineFriendsPtr Friends = OnlineSub->GetFriendsInterface();
Friends->ReadFriendsList(0, "default");
通过 IOnlineAchievements 解锁成就:
IOnlineAchievementsPtr Achievements = OnlineSub->GetAchievementsInterface();
Achievements->WriteAchievements(0, AchievementId);