找回密码
 立即注册
查看: 176|回复: 0

ue5 Lyra初学者游戏包-通用用户插件

[复制链接]
发表于 2024-7-15 18:11 | 显示全部楼层 |阅读模式
对一般联网功能的撑持。虚幻引擎中适用于Lyra示例游戏的通用用户插件 | 虚幻引擎5.0文档 (unrealengine.com)
下载与配置


  • 下载源码,获取Plugins/CommonUser目录
  • 新建空的c++项目,复制张贴CommonUser目录
  • 点击.uproject启动编纂器,编纂-插件-看到CommonUser已经启动,再转到c++编纂成功,先c++编译会报错。右键.uproject-生成files-在vs项目生成Plugins目录
  • 在线处事是试验性的,交换插件以使用新接口,改削CommonUser.Build.cs,将bUseOnlineSubsystemV1布尔值更改为false,然后找到游戏的Config/DefaultEngine.ini配置文件,添加以下行,这将启用使用新接口时所需的版本依赖项。
  1. [/Script/Engine.OnlineEngineInterface]
  2. bUseOnlineServicesV2=true
复制代码

  • 要使用EOS在线处事,你需要在包含[OnlineSubsystemEOS]小节的配置文件中禁用 Epic在线处事(EOS)在线子系统。例如,在 Lyra/Config/Custom/EOS/DefaultEngine.ini 文件中,你应该将bEnabled布尔值设置为 false。
  1. [OnlineSubsystemEOS]
  2. bEnabled=false
复制代码
Lyra中的使用示例

CommonGameInstance,以集成CommonUser和CommonUI插件的功能
  1. #include ”CommonSessionSubsystem.h” //父类是UGameInstanceSubsystem
  2. #include ”CommonUserSubsystem.h” //父类是UGameInstanceSubsystem
  3. void UCommonGameInstance::Init()
  4. {
  5.         Super::Init();
  6.         // After subsystems are initialized, hook them together
  7.         FGameplayTagContainer PlatformTraits = ICommonUIModule::GetSettings().GetPlatformTraits();
  8.         UCommonUserSubsystem* UserSubsystem = GetSubsystem<UCommonUserSubsystem>();
  9.         if (ensure(UserSubsystem))
  10.         {
  11.                 UserSubsystem->SetTraitTags(PlatformTraits);
  12.                 UserSubsystem->OnHandleSystemMessage.AddDynamic(this, &UCommonGameInstance::HandleSystemMessage);
  13.                 UserSubsystem->OnUserPrivilegeChanged.AddDynamic(this, &UCommonGameInstance::HandlePrivilegeChanged);
  14.         }
  15.         UCommonSessionSubsystem* SessionSubsystem = GetSubsystem<UCommonSessionSubsystem>();
  16.         if (ensure(SessionSubsystem))
  17.         {
  18.                 SessionSubsystem->OnUserRequestedSessionEvent.AddUObject(this, &UCommonGameInstance::OnUserRequestedSession);
  19.         }
  20. }
复制代码
LyraFrontEndStateComponent,直接从源代码访谒CommonUser子系统,在显示主菜单(W_LyraFrontEnd)之前,系统会使用CommonUI显示特定于平台的按”开始”(Press Start)画面(W_LyraStartup** ),而此类就是这个逻辑的一部门。
  1. #include ”CommonSessionSubsystem.h”
  2. #include ”CommonUserSubsystem.h”
  3. #include ”CommonUserTypes.h”
  4. void ULyraFrontendStateComponent::BeginPlay()
  5. {
  6.         Super::BeginPlay();
  7.         // Listen for the experience load to complete
  8.         AGameStateBase* GameState = GetGameStateChecked<AGameStateBase>();
  9.         ULyraExperienceManagerComponent* ExperienceComponent = GameState->FindComponentByClass<ULyraExperienceManagerComponent>();
  10.         check(ExperienceComponent);
  11.         // This delegate is on a component with the same lifetime as this one, so no need to unhook it in
  12.         ExperienceComponent->CallOrRegister_OnExperienceLoaded_HighPriority(FOnLyraExperienceLoaded::FDelegate::CreateUObject(this, &ThisClass::OnExperienceLoaded));
  13. }
  14. void ULyraFrontendStateComponent::OnExperienceLoaded(const ULyraExperienceDefinition* Experience)
  15. {
  16.         FControlFlow& Flow = FControlFlowStatics::Create(this, TEXT(”FrontendFlow”))
  17.                 .QueueStep(TEXT(”Wait For User Initialization”), this, &ThisClass::FlowStep_WaitForUserInitialization)
  18.                 .QueueStep(TEXT(”Try Show Press Start Screen”), this, &ThisClass::FlowStep_TryShowPressStartScreen)
  19.                 .QueueStep(TEXT(”Try Join Requested Session”), this, &ThisClass::FlowStep_TryJoinRequestedSession)
  20.                 .QueueStep(TEXT(”Try Show Main Screen”), this, &ThisClass::FlowStep_TryShowMainScreen);
  21.         Flow.ExecuteFlow();
  22.         FrontEndFlow = Flow.AsShared();
  23. }
复制代码
W_LyraStartup -来自目录UI/Menu等多个控件直接访谒CommonUserSubsystem并使用函数或异步节点来措置用户操作。-事件触发是点击开始


LyraUserFacingExperienceDefinition类描述了如何使用多玩家FPS的尺度菜单选项启动游戏会话。它由W_HostSessionScreen等控件用于创建会话描述,以传递到CommonSessionSubsystem中来托管或插手游戏会话。
  1. #include ”CommonSessionSubsystem.h”
  2. #include UE_INLINE_GENERATED_CPP_BY_NAME(LyraUserFacingExperienceDefinition)
  3. UCommonSession_HostSessionRequest* ULyraUserFacingExperienceDefinition::CreateHostingRequest() const
  4. {
  5.         const FString ExperienceName = ExperienceID.PrimaryAssetName.ToString();
  6.         const FString UserFacingExperienceName = GetPrimaryAssetId().PrimaryAssetName.ToString();
  7.         UCommonSession_HostSessionRequest* Result = NewObject<UCommonSession_HostSessionRequest>();
  8.         Result->OnlineMode = ECommonSessionOnlineMode::Online;
  9.         Result->bUseLobbies = true;
  10.         Result->MapID = MapID;
  11.         Result->ModeNameForAdvertisement = UserFacingExperienceName;
  12.         Result->ExtraArgs = ExtraArgs;
  13.         Result->ExtraArgs.Add(TEXT(”Experience”), ExperienceName);
  14.         Result->MaxPlayerCount = MaxPlayerCount;
  15.         if (bRecordReplay)
  16.         {
  17.                 Result->ExtraArgs.Add(TEXT(”DemoRec”), FString());
  18.         }
  19.         return Result;
  20. }
复制代码
W_HostSessionScreen来自目录UI/Menu/Experiences-事件触发是选中会话


Lyra Starter Game旨在作为Epic在线处事(EOS)子系统的正常运作例子。默认情况下,Lyra使用Null子系统,仅在编纂器中或局域网上撑持多玩家。要启用对EOS的撑持,你可以在创建打包版本时使用LyraGameEOS方针,或将以下选项添加到你的命令行:
  1. -customconfig=EOS
复制代码
这将从你的 c:Lyra/Config/Custom/EOS 目录加载特定于EOS的配置文件。这些配置文件应该改削为使用特定于你的项目的EOS标识符。
实际使用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 21:08 , Processed in 0.168086 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表