最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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:游戲玩法是怎么開啟的?的評論 (共 條)

分享到微博請遵守國家法律
渭南市| 桐乡市| 金塔县| 三台县| 长丰县| 榆林市| 甘泉县| 大悟县| 文登市| 杭锦旗| 尼木县| 鄯善县| 肥西县| 梁河县| 牡丹江市| 文成县| 宜昌市| 卓尼县| 芮城县| 同江市| 蒲城县| 清徐县| 六盘水市| 永宁县| 南投市| 藁城市| 惠来县| 怀柔区| 梁山县| 如东县| 新丰县| 阳谷县| 木兰县| 清涧县| 安西县| 宁蒗| 年辖:市辖区| 若尔盖县| 喜德县| 定安县| 衡阳县|