Ue4_UProperty使用情况

1.UObject 类型指针变量标记UPROPERTY与不标记区别

注:标记UPROPERTY 会自动加入root set 阻止垃圾回收

一个Up标记object类指针变量,当指向null时,object会进行析构,自动进行垃圾回收

一个非标记的object类变量,当未添加AddToRoot时,会被下一次垃圾回收,留下野指针。

2.TWeakObject 

如一个TWeakObject 标记UPROPETY,会阻止正常的GC,延长其生命周期,除主动指定为Null,不会被垃圾回收

不被UPROPETY标记,不会阻止垃圾回收,被垃圾回收后返回可用isvaild 判断,不会产生野指针

例:使用非UPOPERTY TWeakObject情况

射击游戏类中发射子弹,击中销毁,未击中的情况可正常垃圾回收

 

TArray情况-一个UPROPETY标记内置容器,清空数组的过程中会自动置空进行析构
    非标记UPROPETY变量,自动被垃圾回收后,但指针并非空,出现野指针,可能出现崩溃
 

虚幻引擎垃圾回收机制

虚幻实现垃圾回收机制,不再被引用或已被显式标记为销毁的`UObject`将定期清除。引擎构建一个引用图表以确定哪些`UObject`仍在使用,哪些是孤立的。

在该图表根部是一组指定为"根集"的`UObject

任何`UObject`都可以添加到根集。当进行垃圾回收时,引擎将从根集开始,搜索已知`UObject`引用树来跟踪所有引用的`UObject

任何未被引用的`UObject`(意味着未在树搜索中找到这些对象)将被假设为不再需要,因此被删除。

你通常需要保持对希望保持活跃的任何Object的`UPROPERTY`引用,或者将指向它的指针存储在`TArray`或其他引擎容器类中。

 

参考:

虚幻Object处理 | 虚幻引擎文档 (unrealengine.com)

posted on   Animer  阅读(630)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示