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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署