UE4 ActionRPG学习记录2GameInstance

关于GameInstance的介绍请看大钊的文章

《InsideUE4》GamePlay架构(九)GameInstance - 知乎

先来看看RPG里的gameinstance都有哪些接口

void AddDefaultInventory(URPGSaveGame* SaveGame, bool bRemoveExtra = false);

URPGSaveGame* GetCurrentSaveGame();

bool LoadOrCreateSaveGame();

bool HandleSaveGameLoaded(USaveGame* SaveGameObject);

void GetSaveSlotInfo(FString& SlotName, int32& UserIndex) const;

bool WriteSaveGame();

void ResetSaveGame();

virtual void HandleAsyncSave(const FString& SlotName, const int32 UserIndex, bool bSuccess);

 从这些接口可以看出,GameInstance里面是处理全局相关的数据逻辑。

例如加载游戏,暂停游戏,保存游戏,重置游戏,保存全局设置等逻辑。

现在来看看加载关卡的流程

首先引起设置切换关卡的信息

 

GEngine->SetClientTravel( World, *Cmd, TravelType );


void UEngine::SetClientTravel( UWorld *InWorld, const TCHAR* NextURL, ETravelType InTravelType )
{
	FWorldContext &Context = GetWorldContextFromWorldChecked(InWorld);

	// set TravelURL.  Will be processed safely on the next tick in UGameEngine::Tick().将在UGameEngine::tick()中的下一个勾号上安全处理。
	Context.TravelURL    = NextURL;
	Context.TravelType   = InTravelType;
}

 

 然后Tick函数里进行判断,调用

EBrowseReturnVal::Type UEngine::Browse( FWorldContext& WorldContext, FURL URL, FString& Error )

正常会调用LoadMap函数加载地图,里面会进行一系列的操作,如清理上个关卡的信息等,后面调用UWorld::BeginPlay()开是初始化流程(LoadMap里面会调用SetGameMode,会创建GameMode对象,创建GameMode对象后,GameModeBase::PreInitializeComponents()也会创建GameState对象)。

下篇继续GameMode逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值