1 Star 0 Fork 0

Soap / Lyra学习笔记

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Lyra项目流程图.md 5.49 KB
一键复制 编辑 原始数据 按行查看 历史
Soap 提交于 2024-05-08 18:34 . 新文档

Lyra项目流程图

\Lyra\Content\System\DefaultEditorMap\B_ExperienceList3D

  1. 在项目设置中----->游戏----->资产管理器。在索引5 【LyraUserFacingExperienceDefinition】Lyra用户界面体验定义

  2. // Copyright Epic Games, Inc. All Rights Reserved.
    
    #pragma once
    
    #include "Engine/DataAsset.h"
    
    #include "LyraUserFacingExperienceDefinition.generated.h"
    
    class FString;
    class UCommonSession_HostSessionRequest;
    class UObject;
    class UTexture2D;
    class UUserWidget;
    struct FFrame;
    
    /** 用于在用户界面中显示体验并开始新会话的设置描述 */
    UCLASS(BlueprintType)
    class ULyraUserFacingExperienceDefinition : public UPrimaryDataAsset
    {
    	GENERATED_BODY()
    
    public:
    	/** 需要加载的具体地图 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience, meta=(AllowedTypes="Map"))
    	FPrimaryAssetId MapID;
    
    	/** 加载的游戏体验 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience, meta=(AllowedTypes="LyraExperienceDefinition"))
    	FPrimaryAssetId ExperienceID;
    
    	/** 作为 URL 选项传递给游戏的额外参数 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	TMap<FString, FString> ExtraArgs;
    
    	/** UI 中的主标题 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	FText TileTitle;
    
    	/** 第二标题 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	FText TileSubTitle;
    
    	/** 完整描述 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	FText TileDescription;
    
    	/** UI 中使用的图标 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	TObjectPtr<UTexture2D> TileIcon;
    
    	/** 加载屏幕小部件,用于加载进入(或退出)特定体验时显示 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=LoadingScreen)
    	TSoftClassPtr<UUserWidget> LoadingScreenWidget;
    
    	/** 如果为真,则这是一个默认体验,应该用于快速游玩,并在 UI 中优先考虑 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	bool bIsDefaultExperience = false;
    
    	/** 如果为真,则会在前端的体验列表中显示 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	bool bShowInFrontEnd = true;
    
    	/** 如果为真,游戏的重播将被记录 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	bool bRecordReplay = false;
    
    	/** 本次会话的最大玩家人数 */
    	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience)
    	int32 MaxPlayerCount = 16;
    
    public:
    	/** 创建一个请求对象,用于使用这些设置实际开始一个会话 */
    	UFUNCTION(BlueprintCallable, BlueprintPure=false, meta = (WorldContext = "WorldContextObject"))
    	UCommonSession_HostSessionRequest* CreateHostingRequest(const UObject* WorldContextObject) const;
    };
    // Copyright Epic Games, Inc. All Rights Reserved.
    
    #include "LyraUserFacingExperienceDefinition.h"
    #include "CommonSessionSubsystem.h"
    #include "Containers/UnrealString.h"
    #include "UObject/NameTypes.h"
    #include "Engine/GameInstance.h"
    #include "Engine/Engine.h"
    #include "Replays/LyraReplaySubsystem.h"
    
    #include UE_INLINE_GENERATED_CPP_BY_NAME(LyraUserFacingExperienceDefinition)
    
    UCommonSession_HostSessionRequest* ULyraUserFacingExperienceDefinition::CreateHostingRequest(const UObject* WorldContextObject) const
    {
    	const FString ExperienceName = ExperienceID.PrimaryAssetName.ToString();
    	const FString UserFacingExperienceName = GetPrimaryAssetId().PrimaryAssetName.ToString();
    
    	UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::ReturnNull);
    	UGameInstance* GameInstance = World ? World->GetGameInstance() : nullptr;
    	UCommonSession_HostSessionRequest* Result = nullptr;
    	
    	if (UCommonSessionSubsystem* Subsystem = GameInstance ? GameInstance->GetSubsystem<UCommonSessionSubsystem>() : nullptr)
    	{
    		Result = Subsystem->CreateOnlineHostSessionRequest();
    	}
    
    	if (!Result)
    	{
    		// 无法使用子系统,因此创建一个
    		Result = NewObject<UCommonSession_HostSessionRequest>();
    		Result->OnlineMode = ECommonSessionOnlineMode::Online;
    		Result->bUseLobbies = true;
    	}
    	Result->MapID = MapID;
    	Result->ModeNameForAdvertisement = UserFacingExperienceName;
    	Result->ExtraArgs = ExtraArgs;
    	Result->ExtraArgs.Add(TEXT("Experience"), ExperienceName);
    	Result->MaxPlayerCount = MaxPlayerCount;
    
    	if (ULyraReplaySubsystem::DoesPlatformSupportReplays())
    	{
    		if (bRecordReplay)
    		{
    			Result->ExtraArgs.Add(TEXT("DemoRec"), FString());
    		}
    	}
    
    	return Result;
    }
  3. 体验定义的数据资产列表:

    DA_Convolution_ControlPoint、与你的队友一起保护控制点,增加你的得分并取得胜利。

    DA_ExamplePlaylist、示例播放列表

    DA_Expanse_TDM、在这个经典的对抗团队比赛中,找到并消灭足够的敌人以取胜。

    DA_Frontend、游戏的主菜单

    DA_ShooterGame_ShooterGym、ShooterCore 的小型测试关卡

    DA_ShooterGame_ShooterPerf、性能测试地图

    DA_TopDownArena_Multiplayer、在这款多人顶视角聚会游戏中,摧毁方块、收集增益道具,避免被炸毁!

    DA_TopDownArena_Splode、在这款顶视角聚会游戏中,摧毁方块、收集增益道具,避免被炸毁。

1
https://gitee.com/SoapLiu/lyra-learning-notes.git
git@gitee.com:SoapLiu/lyra-learning-notes.git
SoapLiu
lyra-learning-notes
Lyra学习笔记
master

搜索帮助