UE GamePlay框架(六) Subsystems:一套可以定义自动实例化和释放的类的框架

1、Subsystems:指的是这整套“子系统”框架,包含了定义的类以及运作机制。
2、SubsystemType/SubsystemClass:指向的是Subsystem的类型
3、5类Outer对象:Subsystem对象依存属于的5类Outer对象。
UEngine* GEngine;
UEditorEngine* GEditor;
UGameInstance* GameInstance;
UWorld* World;
ULocalPlayer* LocalPlayer;
4、生命周期5类:引擎已经预定义的5个让你可以由此派生的父类。
UEngineSubsystem
UEditorSubsystem
UGameInstanceSubsystem
UWorldSubsystem
ULocalPlayerSubsystem
5、Subsystems不支持网络复制
在这里插入图片描述
一、优点
1、自动实例化
2、托管生命周期
二、Subsystems的基本使用
//声明定义:
UCLASS()
class HELLO_API UMyEditorSubsystem : public UEditorSubsystem
UCLASS()
class HELLO_API UMyEngineSubsystem : public UEngineSubsystem
UCLASS()
class HELLO_API UMyGameInstanceSubsystem : public UGameInstanceSubsystem
UCLASS()
class HELLO_API UMyWorldSubsystem : public UWorldSubsystem
UCLASS()
class HELLO_API UMyLocalPlayerSubsystem : public ULocalPlayerSubsystem
//注:使用UEditorSubsystem需要在Build.cs里加上EditorSubsystem模块的引用,因为这是编辑器模块
if (Target.bBuildEditor) { PublicDependencyModuleNames.AddRange(new string[] { “EditorSubsystem” }); }

三、Subsystems生命周期
Subsystem对象的生命周期取决于其依存的Outer对象的生命周期,随着Outer对象的创建而创建,随着Outer对象的销毁而销毁。而选择依存哪种Outer对象,就是选择哪种Subsystem生命周期,靠的就是选择继承于哪个Subsystem基类。
在这里插入图片描述
一种特定类型的USubsystem子类只能创建出一个USubsystem对象,类似单件模式。
1、三种引擎模式
引擎编辑器模式
Runtime模式:游戏打包后的运行状态
PIE(Play In Editor)模式:编辑器里点击Play后的运行状态
2、五个Host对象的生命周期
(1)UEngine* GEngine: 代表引擎,数量1。Editor或Runtime模式都是全局唯一,从进程启动开始创建,进程退出时销毁。
(2)UEditorEngine* GEditor: 代表编辑器,数量1。,只在编辑器下存在且全局唯一,从编辑器启动开始创建,到编辑器退出时销毁。
(3)UGameInstance* GameInstance:代表一场游戏,数量1。 从游戏的启动开始创建,游戏退出时销毁。Runtime或PIE模式都算
(4)UWorld* World:代表一个世界,数量可能>1。编辑器下的视口场景也是个World!其生命周期,跟GameMode是一起的。
(5)其生命周期,其实跟GameMode是一起的。生命周期是跟UGameInstance一起的。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值