UE4游戏开发随笔(三)Gamemode和GameState定义阶段的使用
鑫2079
2022年09月14日 12:05
收录于文集
共5篇

时:2022-7-16

在制作回合制战斗的DEMO时对Gamemode、GameState使用的总结。

  1. 目标功能

2.Gamemode和GameState的分工

官方文档:

https://docs.unrealengine.com/4.26/zh-CN/InteractiveExperiences/Framework/GameMode/

(1)最重要的一点:Gamemode只在Server运行,GameState在Server和每个Client分别运行

(2)对于需要考虑网络的多人游戏,则需要注意把需要进行同步的逻辑放在Gamemode中,不需要同步的逻辑放在GameState中

(3)在制作单人游戏中,我使用的方法是,GameState管游戏数据的存取,Gamemode则管游戏世界的各项逻辑。

3.工程实现

GameState:

Gamemode:

(1)在GameState中定义Enum进行阶段的划分,在一些游戏中可在Tick中进行阶段判断以及相关逻辑,在制作该Demo中没有刚需则不使用Tick。在GameState里还可以存储RoundIndex等游戏数据。

(2)我的方法是在Gamemode中使用接口调用GameState里修改阶段的接口对私有变量阶段进行修改,这样的好处是State不会被乱改乱得,其次还可以同时再针对不同阶段的修改时触发特殊的逻辑

(3)在阶段变更时,如果需要更新UI或者其他什么的连锁反应可以考虑使用代理去触发其他逻辑,这里没有这个需求就没写