参考子系统与库
UCFGlassShardSubsystem
模块Crushform头文件CFGlassShardSubsystem.h父类UWorldSubsystem
生成碎裂玻璃板的碎片:每块碎裂的玻璃板对应一个池化的 Niagara 系统。系统在播完时、其玻璃板被修复时以及游戏结束时回到池中。
绝不会在专用服务器上生成。默认碎片系统 UCFSettings::DefaultGlassShardSystem 在游戏开始时异步加载,从不同步加载:在它进入内存之前,GetDefaultSystem 返回 nullptr。
函数
AUTHORITY · 服务器,每个端LOCAL · 本机PURE · 只读
UCFGlassShardSubsystem* Get(const UObject* WorldContext)
C++ ONLY
WorldContext 所在世界的碎片子系统;没有时为 nullptr。
bool ShouldSpawnInNetMode(ENetMode NetMode)
C++ ONLY
处于 NetMode 的世界是否生成碎片:除专用服务器之外的一切。
UNiagaraSystem* GetDefaultSystem() const
PUREC++ ONLY
默认碎片系统进入内存之后返回它;在此之前为 nullptr。从不加载它。
UNiagaraComponent* SpawnShards(UNiagaraSystem& System, FCFGlassShardSpawn&& Spawn, const UObject& Owner, int32 OwnerKey, UObject* Callback)
C++ ONLY
把 Spawn 的碎片生成为一个由 System 创建的池化系统,归属于 Owner 的单元 OwnerKey,并返回该系统。Spawn 为空,或 Niagara 的预剔除检查拒绝该系统时,返回 nullptr。超出 CFGlassShardSystem::GetMaxLiveShards() 的碎片会被丢弃,存活碎片超过该上限时,最旧的系统会被释放。一帧内超过 CFGlassShardSystem::GetShardSystemsPerFrame() 之后,该次生成会按顺序等待之后的帧,此时本函数返回 nullptr;它随后启动时,会按每个碎片的速度、沿其方向移动它等待过的时间,最多 CFGlassShardSystem::MaxQueuedFlightSeconds。
void ReleaseOwnedShards(const UObject* Owner, int32 OwnerKey)
C++ ONLY
立即移除 Owner 的存活碎片和等待中的碎片;INDEX_NONE:Owner 的每个单元。
void ReleaseAllShards()
C++ ONLY
立即移除所有存活碎片和等待中的碎片。
int32 GetLiveShardCount() const
PUREC++ ONLY
存活系统中的碎片数量。
int32 GetLiveSystemCount() const
PUREC++ ONLY
所持有的池化系统数量,包括已结束但尚未归还的系统。