2019年4月2日,UE4.22版本正式发布,其中包含了很多新的特性,Subsystem(子系统)便是其中之一,这篇文章将分析Subsystem的用法以及实现原理。
概述
Subsystem(子系统)是自动实例化的类,其生命周期可以管理,目前与对应模块是一致的,能在不修改或继承引擎类的情况下,方便的扩展对应模块的功能,除此之外,还能原生获取蓝图和Python的公开性。Subsystem的设计使用了类似组合的设计模式,因此没有复杂的继承,也利于扩展和理解。
注意:这里所说的Subsystem与OnlineSubsystem是不同的概念。
当前支持的子系统生命周期
引擎
class UMyEngineSubsystem : public UEngineSubsystem {
... };
引擎子系统的模块加载时,子系统将在模块的Startup()函数执行返回后执行Initialize()。子系统将在模块的Shutdown()函数返回后执行Deinitialize()
这些子系统将通过GEngine进行访问:
UMyEngineSubsystem MySubsystem = GEngine->GetEngineSubsystem();
编辑器
class UMyEditorSubsystem : public UEditorSubsystem {
... };
编辑器子系统的模块加载时,子系统将在模块的Startup()函数返回后执行Initialize()。子系统将在模块的Shutdown()函数返回后执行Deinitialize()。
这些子系统将通过GEditor进行访问: