UE5 Gameplay一些类的生命周期备忘

作为一个初学者,尽管能够在UE中能够使用蓝图和简单在C++中做一些逻辑更改,但对 Gameplay 框架的使用上还是一脸懵逼,比如:

  玩家的本地数据存在哪里?

  游戏的数据存在哪?

  如果我切换了关卡,放在哪的数据会丢?

  如果玩家死亡了,放在哪的数据会丢?

  如果我想要存储一个全局数据,那么这个数据应该放在哪个类中?GameInstance? GameState?

  NPC或者玩家的逻辑一股脑扔在Pawn或者Character中有没有问题?

  ......

 

  因为是做纯服务器出身,我更倾向代码的框架和逻辑,在这些东西没有搞清楚之前,每每完成一行代码时我都会心有余悸:即使测试和表现都看起来正常,这么写没问题吗?

  UE的对象管理貌似是每个对象都需要另一个对象管理的,这就形成了一个层级关系,因此每种对象生命周期就非常重要,毕竟我总不能在对象A的生命周期完成之后,依然尝试使用A的指针。

  最近在看Gameplay框架,涉及到几个关键并耳熟能详的类,在此做一些备忘。

  1. GameMode : 仅在 Server 中存在,设定了游戏的规则,更注重游戏的基本玩法逻辑。

   

  2. GameState : Server & Client 中都存在,生命周期随 Level,可 Replicate。游戏本身的数据——更注重数据而非逻辑。

  3. PlayerState : Server & Client 中都存在,生命周期随 Level,可 Replicate。玩家的数据。

  4. Controller : Server & Client 中都存在,生命周期随 Level,可 Replicate。操控 Pawn 的逻辑。

  5. GameInstance : Server & Client 中都存在各自独立的一份,生命周期在 Level 之上,不能 Replicate。适合放置Level之上的逻辑(即使Level切换也不会丢失的)。

  6. Subsystem : 使用简单,有 5 种 Subsystem 的基类可被继承,继承不同的基类使得 Subsystem 的生命周期不同:

    UEngineSubsystem,游戏/编辑器进程的开始到结束

    UEditorSubsystem,编辑器的开始到结束

    UGameInstanceSubsystem,游戏启动到结束

    UWorldSubsystem,主关卡(Persistent Level)切换后重建

    ULocalPlayerSubystem,随LocalPlayer的生命周期,数量可能 > 1

 

posted on   __Even  阅读(528)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示