当前位置: 首页 > news >正文

UE5C++中,NewObject<>()和CreateDefaultSubobject<>()的区别

UProceduralMeshComponent* ProceduralMeshComponent = NewObject<UProceduralMeshComponent>(MyActor);
UProceduralMeshComponent* ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));

NewObject函数


  1. 创建方式:需要传入类名作为模板参数以及一个父对象。
  2. 上下文环境NewObject函数可以在任何上下文中使用,包括Actor的构造函数、蓝图、C++函数等,跟new操作符是一样的。
  3. 实例化方式:new一个新的对象,并返回其指针。
  4. 内存管理手动管理其生命周期,但指定了outer之后,它的生命周期跟随其父,就可以自动管理咯。
  5. 使用场景 :在非构造函数中使用。一般来说好像都是这样,非构造函数中、运行时动态创建组件。
示例代码 :创建并添加到Actor中
UProceduralMeshComponent* ProceduralMeshComponent = NewObject<UProceduralMeshComponent>(this);
ProceduralMeshComponent->RegisterComponent();
ProceduralMeshComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepRelativeTransform);

CreateDefaultSubobject函数


  1. 创建方式:类名作为模板参数,以及创建出来的对象名。
  2. 上下文环境:通常在Actor的构造函数中使用,创建默认子对象。
  3. 实例化方式:创建一个新的子对象,并返回其指针。
  4. 内存管理自动内存管理,不需要手动释放。
  5. 使用场景:构造函数中,在对象创建时就创建那些组件。
示例代码:在Actor构造函数中使用
MyActor::MyActor()
{PrimaryActorTick.bCanEverTick = true;UProceduralMeshComponent* ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));ProceduralMeshComponent->RegisterComponent();RootComponent = ProceduralMeshComponent;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网络通信---UDP
  • C语言 写一个函数days,实现某日在本年中是第几天计算。
  • c++中grpc简单使用---函数介绍及其代码演示
  • 如何处理selenium Webdriver中的文本框?
  • Linux环境docker部署Firefox结合内网穿透远程使用浏览器测试
  • SpringBoot 日志
  • C:图案打印
  • C++——QT:保姆级教程,从下载到安装到用QT写出第一个程序
  • Android串口开发及读取完整数据的解决方法
  • Vite项目中根据不同打包命令配置不同的后端接口地址,proxy解决跨域
  • Linux中的文件操作
  • 学习java的设计模式
  • XPathParser类
  • 【React】详解如何获取 DOM 元素
  • 【图解网络】学习记录
  • Google 是如何开发 Web 框架的
  • 4个实用的微服务测试策略
  • flask接收请求并推入栈
  • java中的hashCode
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • log4j2输出到kafka
  • Object.assign方法不能实现深复制
  • Promise初体验
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)21
  • 码农张的Bug人生 - 见面之礼
  • 前端工程化(Gulp、Webpack)-webpack
  • 全栈开发——Linux
  • 使用common-codec进行md5加密
  • Java数据解析之JSON
  • 大数据全解:定义、价值及挑战
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Linux(权限管理)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (分布式缓存)Redis分片集群
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (一)80c52学习之旅-起始篇
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .Net程序帮助文档制作
  • .NET企业级应用架构设计系列之技术选型
  • [ NOI 2001 ] 食物链
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——