当前位置: 首页 > news >正文

虚幻引擎的 Online Subsystem

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、理解 Online Subsystem 的核心概念
    • 1.1 什么是 Online Subsystem?
    • 1.2 支持的平台服务
  • 二、环境配置与基础设置
    • 2.1 启用 Online Subsystem
  • 三、 基础功能实现(C++/蓝图)
    • 3.1 玩家登录(Identity)
    • 3.2 创建/加入会话(Session)
  • 四、 本地测试与调试
    • 4.1 使用 Null 子系统测试
    • 4.2 日志查看
  • 五、进阶功能
    • 5.1 好友与邀请
    • 5.2 成就系统
  • 官方链接[Online Subsystem](https://docs.unrealengine.com/5.3/en-US/online-subsystem-in-unreal-engine/)


前言

它是虚幻引擎中管理在线功能的核心框架,支持多种后端服务(如EOS、Steam、Xbox Live等)。

一、理解 Online Subsystem 的核心概念

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.1 什么是 Online Subsystem?

作用:一个抽象层,统一不同平台的在线服务(如登录、会话、好友、成就等)。

关键接口:
IOnlineSubsystem:主入口,获取其他功能接口。
IOnlineSession:管理多人游戏会话(创建/加入房间、匹配)。
IOnlineIdentity:处理玩家身份验证(登录/登出)。
IOnlineFriends:好友列表管理。
IOnlineStore:内购功能。

1.2 支持的平台服务

默认支持:Null(本地测试)、EOS、Steam、Xbox Live、PSN等。

配置文件:通过 DefaultEngine.ini 切换不同平台的后端服务。

二、环境配置与基础设置

2.1 启用 Online Subsystem

修改 DefaultEngine.ini
在项目配置文件中指定使用的在线服务(例如用 Null 测试):
[OnlineSubsystem]
DefaultPlatformService=Null  // 本地测试用
插件管理
在虚幻编辑器中启用 Online Subsystem 相关插件:
Edit > Plugins > Search “Online” → 启用 Online Subsystem Steam/EOS 等。

三、 基础功能实现(C++/蓝图)

3.1 玩家登录(Identity)

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("登录成功!")); }
}
蓝图:
使用 Online Subsystem Blueprint Library 中的节点(如 Login、On Login Complete)。

3.2 创建/加入会话(Session)

创建会话:
示例:
IOnlineSessionPtr Session = OnlineSub->GetSessionInterface();
if (Session.IsValid())
{FOnlineSessionSettings Settings;Settings.bIsLANMatch = false; // 在线会话Settings.NumPublicConnections = 4; // 最大玩家数Session->CreateSession(0, "MySession", Settings);
}
加入会话:
通过 FindSessions 搜索可用房间,再调用 JoinSession。

四、 本地测试与调试

4.1 使用 Null 子系统测试

在 DefaultEngine.ini 中设置 DefaultPlatformService=Null,无需真实平台账号即可测试功能。

启动两个本地客户端(PIE 或独立进程)模拟多人联机。

4.2 日志查看

在输出日志中过滤 LogOnline,查看在线子系统的调试信息:

UE_LOG(LogOnline, Log, TEXT("Session created!"));

五、进阶功能

5.1 好友与邀请

使用 IOnlineFriends 接口获取好友列表:

IOnlineFriendsPtr Friends = OnlineSub->GetFriendsInterface();
Friends->ReadFriendsList(0, "default");

5.2 成就系统

通过 IOnlineAchievements 解锁成就:

IOnlineAchievementsPtr Achievements = OnlineSub->GetAchievementsInterface();
Achievements->WriteAchievements(0, AchievementId);

官方链接Online Subsystem

http://www.lryc.cn/news/572221.html

相关文章:

  • 随记:在springboot中websocket的使用
  • Xsens IMU与NVIDIA Jetson兼容,助您将智能和自主系统更快推向市场
  • 191. 位1的个数
  • SQL注入安全研究
  • FreeRTOS 任务管理学习笔记
  • 从代码学习深度强化学习 - Double DQN PyTorch版
  • 动态规划算法思路详解
  • uni-app总结5-UTS插件开发
  • JavaScript性能优化实战大纲
  • 介绍一款免费MES、开源MES系统、MES源码
  • Rpc - RpcCaller 模块
  • 获取gitlab上项目分支版本(二)
  • 据字典是什么?和数据库、数据仓库有什么关系?
  • 解锁 JavaScript 模块化:ES6 Module 语法深度指南
  • OpenGL——单位向量点乘和叉乘在几何的应用
  • 从C++编程入手设计模式——装饰器模式
  • implement用法
  • 客户催单-01.需求分析和设计
  • 【单片机】51单片机学习笔记
  • 数据结构 4 (栈和队列)
  • 苍穹外卖-2025 完成基础配置环节(详细图解)
  • 拼多多商家端 anti_content 补环境分析
  • 如何使用 USB 数据线将文件从 PC 传输到 iPhone
  • 【漏洞复现】Apache Kafka Connect 任意文件读取漏洞(CVE-2025-27817)
  • 数控滑台在精密制造中起着至关重要的作用
  • 主成分分析(PCA)例题——给定协方差矩阵
  • camel-ai Agent模块- CriticAgent
  • 用 python 开发一个可调用工具的 AI Agent,实现电脑配置专业评价
  • Vim:从入门到进阶的高效文本编辑器之旅
  • 微信小程序传参过来了,但是数据没有获取到