中EN

Programming Subsystems

  • "automatically instanced classes with managed lifetimes"; extension points with Blueprint and Python exposure, avoiding modifying or overriding engine classes.
  • Listed lifetimes: Engine (UEngineSubsystem), Editor (UEditorSubsystem), GameInstance (UGameInstanceSubsystem), LocalPlayer (ULocalPlayerSubsystem).
  • GameInstance example: after UGameInstance created, subsystem instance created; on init Initialize(); on shutdown Deinitialize(); then reference dropped and GC'd if no more references.
  • Reasons: save time, avoid overriding engine classes, avoid adding API to busy class, typed Blueprint nodes (no casting), Python access, modularity; especially useful for plugins.
  • Engine/Editor subsystems Initialize after module Startup() returns, Deinitialize after Shutdown(); accessed GEngine->GetEngineSubsystem(), GEditor->GetEditorSubsystem(); GameInstance->GetSubsystem(); LocalPlayer->GetSubsystem().
  • Example UMyGamesStatsSubsystem instead of bloating a custom UGameInstance; Initialize(FSubsystemCollectionBase&), Deinitialize().
  • World subsystem (from Python API 5.8 class WorldSubsystem): "Base class for auto instanced and initialized systems that share the lifetime of a UWorld"; FWorldSubsystemCollection handles calling PostInitialize and OnWorldBeginPlay for already initialized worlds. (Engine module, WorldSubsystem.h)

引用这一章的笔记

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原