五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Lyra框架01:游戲玩法是怎么開啟的?

2023-07-16 20:22 作者:半步游戲設(shè)計(jì)師  | 我要投稿

在Lyra框架下,Epic將每一次對局定義為一個(gè)Experience實(shí)例。

Lyra在WorldSetting數(shù)據(jù)結(jié)構(gòu)內(nèi)新增了一個(gè)字段叫DefaultGameplayExperience,設(shè)計(jì)者可以通過配置這個(gè)值來改變每張地圖內(nèi)所使用的Experience模板。

當(dāng)這個(gè)World(地圖)被加載后,在GameMode的初始化函數(shù)(ALyraGameMode::InitGame)里調(diào)用了如下函數(shù),意味著下一幀跑HandleMatchAssignmentIfNotExpectingOne這個(gè)函數(shù):

GetWorld()->GetTimerManager().SetTimerForNextTick(this, &ThisClass::HandleMatchAssignmentIfNotExpectingOne);

而在這個(gè)函數(shù)里,會(huì)讀取當(dāng)前World配置的DefaultGameplayExperience。然后通過GameState上的ULyraExperienceManagerComponent,開始加載Experience里配置的內(nèi)容。

ULyraExperienceManagerComponent* ExperienceComponent = GameState->FindComponentByClass<ULyraExperienceManagerComponent>();

check(ExperienceComponent);

ExperienceComponent->ServerSetCurrentExperience(ExperienceId);

這里注意GameState是在GameMode的基類里,很早的地方就實(shí)例化了。

void AGameModeBase::PreInitializeComponents()

...

UWorld* World = GetWorld();

GameState = World->SpawnActor<AGameStateBase>(GameStateClass, SpawnInfo);

World->SetGameState(GameState);

...

InitGameState();

LyraGameMode覆寫了InitGameState,加入了監(jiān)聽OnExperienceLoaded的邏輯。

Experience這個(gè)東西非常復(fù)雜,用到了GameFeature等各種特性來動(dòng)態(tài)加載Component、加UI、加Input等等,我們先忽略這些。當(dāng)這些邏輯都跑完了之后,會(huì)回調(diào)ALyraGameMode::OnExperienceLoaded。在這個(gè)函數(shù)里,重新生成了所有的PlayerController,游戲邏輯在此展開。

Lyra框架01:游戲玩法是怎么開啟的?的評論 (共 條)

分享到微博請遵守國家法律
桓仁| 安新县| 封开县| 邢台县| 高青县| 唐海县| 娄底市| 凤庆县| 邮箱| 米泉市| 西盟| 三江| 郴州市| 自贡市| 道真| 紫阳县| 民勤县| 府谷县| 武川县| 阿图什市| 九龙城区| 安西县| 离岛区| 静宁县| 沭阳县| 出国| 平利县| 如皋市| 福建省| 阿荣旗| 安康市| 隆化县| 雅安市| 吴江市| 竹溪县| 平遥县| 青海省| 河津市| 衡阳市| 页游| 茌平县|