20250903-UE5.6多人游戏插件开发
1.创建插件
1 .1 UE编辑器中创建
1.2 插件设置依赖项
2.插件中创建会话
1.创建会话类的父类(使用Subsystem)
插件保证通用性。通过访问Game Instance Subsystem class 来获取当前游戏的Game Instance的内容
知识点
1.UE中的编程子系统
子系统是具有托管生命周期的自动实例化类,为程序员提供易用的扩展点,可避免修改或重写引擎类的复杂性,同时能让蓝图(Blueprint)和 Python 直接访问。目前支持的子系统生命周期类型包括引擎、编辑器、游戏实例、本地玩家等。使用子系统有诸多好处,如节省编程时间、避免重写引擎类、避免在已有大量功能的类上添加更多 API 等,在创建插件时尤其有用。子系统可通过蓝图和 Python 访问,蓝图中自动暴露且有智能节点,Python 可通过内置访问器访问。还详细阐述了不同类型子系统(引擎、编辑器、游戏实例、本地玩家)的生命周期及访问方式,并通过在游戏中添加统计系统的示例,说明了使用子系统相较于其他方式在代码编写上的优势。
重要亮点
- 子系统的定义与特点:子系统是虚幻引擎中具有自动实例化及托管生命周期的类,它为程序员提供便捷的扩展点,无需复杂地修改或重写引擎类,就能让蓝图和 Python 快速获得访问能力。例如创建继承自特定子系统基类的类,就会伴随相关宿主对象(如游戏实例等)的创建、初始化和关闭,自动完成子系统实例的创建、初始化与反初始化等操作。
- 使用子系统的优势:使用子系统可节省编程时间,避免重写引擎类和在已有大量功能的类上新增 API。同时,它能通过友好类型节点让蓝图访问,支持 Python 脚本用于编辑器脚本编写或测试代码编写,还能提供代码的模块化与一致性,在插件创建中作用显著,开发者无需额外说明插件运行代码,用户添加插件即可按既定规则实例化和初始化。
- 子系统在蓝图与 Python 中的访问:在蓝图中,子系统自动暴露,通过智能节点访问,无需类型转换,开发者可通过标准 UFUNCTION () 标记控制蓝图可访问的 API。在 Python 中,可使用内置访问器访问子系统,如 unreal.get_engine_subsystem (unreal.MyEngineSubsystem) ,不过目前 Python 支持属于实验性功能。
- 不同类型子系统的生命周期与访问:引擎子系统在其模块加载时,模块 Startup () 函数返回后初始化,模块 Shutdown () 函数返回后反初始化,通过 GEngine 访问;编辑器子系统类似,在模块相关函数返回后进行初始化与反初始化,通过 GEditor 访问;游戏实例子系统通过 UGameInstance 访问;本地玩家子系统通过 ULocalPlayer 访问。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Never Settle!
评论