UE杂项(Mass 崩溃排查)

崩溃场景1:

创建一个粒子组件,组件设置成AutoDestory, 把粒子组件存储在Mass片段中,添加Mass 处理器遍历访问粒子组件进行组件位置更新。

粒子System 设置为infinite 无限时间,每个发射器设置成Once 模式。

有概率在遍历粒子组件的时候崩溃

崩溃原因:

粒子生命周期:所有发射器都结束的时候,会触发粒子系统完成事件,如果设置是AutoDestory的会自动销毁组件。

在组件销毁后,使用 控制台 obj gc 立即触发gc,Mass 片段中数据不会有gc 引用,不会变成空指针

崩溃场景2:

主线程执行Mass组件Disable 的时候有概率崩溃,崩溃在MassEntityManager::BatchDestroyEntityChunks 的CHECK_SYNC_API() 上

崩溃原因:Mass 处理器是有配置多线程的,同步销毁实体的时候,如果刚好Mass 处理器在其它线程执行就会出现这个问题。需要在MassAgentSubsystem 中去除同步DestroyEnities, 直接用EntityManager->Defer().DestroyEnities() 方式销毁对象

其它:

FInstancedStuct 存储泛型结构体。(存储结构体类型指针和根据结构体大小用FMemory::Malloc 分配的空间地址)

FInstancedPropertyBag 成员是FInstancedStuct,存放的是UPropertyBag 结构体。UPropertyBag 里面有属性列表,FInstancedStuct 分配的空间中对应的偏移位置上存放数据内容。

低电源模式日志:Low Power Mode Changed

相关推荐
zhangzhangkeji3 天前
UE5 C++(71):文件是否存在,文件夹是否存在,FPaths :: FileExists( const FString & InPath) ;
ue5
妙为3 天前
UE5角色穿过石头穿模
ue5·unreal engine5·角色穿越石头·穿模
技术策划Boring4 天前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce
zhangzhangkeji6 天前
UE5 C++(70-2):定义成员函数 getCleanDirectory(..) 和枚举类 EFileDirectoryType,来获得目录
ue5
avi91117 天前
UE4-UE5虚幻引擎-前置学习三,优化,基础CPP
ue5·ue4·游戏开发·虚幻·游戏优化·游戏代码
zhangzhangkeji8 天前
UE5线程进阶(3-2):任务图的相关源码整理。 FGraphEvent 与 TGraphTask 的区别和联系
ue5
zhangzhangkeji9 天前
UE5线程进阶(3-1):
ue5
zhangzhangkeji9 天前
UE5线程进阶(2-3):enum ENamedThreads命名空间 :: Type : int32 { RHIThread = 0 } 是渲染硬件接口线程
ue5
zhangzhangkeji10 天前
UE5线程进阶(2-1):枚举类EAsyncExecution,作业类TAsyncRunnable、TAsyncQueuedWork,及全局线程函数 Async(..),及线程调用的 4 种方法总结
ue5
zhangzhangkeji11 天前
UE5线程进阶(1):
ue5