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

在UEC++中使用什么方式返回像 FTransform 这种类型的值

在UEC++中使用什么方式返回像 FTransform 这种类型的值

在虚幻引擎当想获取一个函数计算好的值,并且类型是 FTranform 时。使用什么方式返回比较好呢。目前有四种方式

方式一:通过值的方式返回

FTransfom GetThingWorldLocation()
{FTranform TempTranform = FTranform::Identity;//..计算出 TempTranform return TempTranform;
}

方式二:通过引用传递的方式

// 调用的地方
FTranform TempTransform;  // 调用者提供存储内存
GetThingWolrdLocation(TempTransform);//源文件
void GetThingWolrdLocation(FVector& OutTransform)
{FTranform TempTransform = FTransform::Identity;//...计算出 TempTrnaformOutTranform = TempTransform;
}

方式三:通过指针的方式

// 调用的地方
FTransform* TempTranform = GetThingWorldLocation();//局部变量 TempTransformTransform 存储在函数栈帧中,当函数执行结束时,栈帧被销毁,该变量的内存空间会被释放。此时返回的指针将指向一块“已释放的内存”(悬垂指针),后续对该指针的任何访问(如解引用)都会导致未定义行为(崩溃、数据错乱等)。// 源码方式1:
FTransform* GetThingWorldLocation()
{FTransform TempTransform = FTransform::Identity;// 计算出 FTransform return &TempTransform;
}

方式四:返回引用的方式

FTransform& GetThingWorldLocation()
{FTransoform TempTransform = FTransform::Identity;return TempTransform; // 返回后, TempTransform 已销毁,引用失效
}

对于上面的四种方式对于 FTransform 来说,直接返回值的方式即可。

FTransform 在 Unreal 中是一个 128字节的结构体(包含 FVector 位置、FQuat 旋转、FVector 缩放,各占16字节,共 16×3=48 字节;或按矩阵存储为 FMatrix 的16个浮点数,共 16×4=64 字节,具体取决于引擎版本,但均远小于“性能敏感”的阈值)。

对于确实需要避免复制的大型结构体(如包含数百个元素的数组),可通过 输出参数(引用传递) 让调用者提供内存空间。

对于 FTransform 这类中小型结构体,按值返回的性能与输出参数基本一致(甚至因 NRVO 优化更优),但代码可读性更好。

现代编译器(如 MSVC、Clang)会通过 返回值优化(RVO/NRVO) 消除按值返回的复制开销:

  • NRVO(具名返回值优化):编译器直接在调用者的栈空间中构造 SplineStartTransform,避免函数内部局部变量到返回值的复制。
  • 即使未触发 NRVO,FTransform 的复制操作(128字节)在现代 CPU 上耗时约 1-2纳秒(亿分之一秒),对游戏逻辑帧率(通常需要每帧处理毫秒级任务)来说完全可忽略。

而上面的按指针返回和按引用返回的方式都会导致悬垂指针,并且在编译的时候就会报错。

辑帧率(通常需要每帧处理毫秒级任务)来说完全可忽略。

而上面的按指针返回和按引用返回的方式都会导致悬垂指针,并且在编译的时候就会报错。

在 Unreal Engine 中,所有值类型(FVector、FRotator、FTransform、FColor 等)均应按值传递和返回,这是引擎的标准设计模式,也是避免内存错误的关键原则。

http://www.dtcms.com/a/617562.html

相关文章:

  • GPT‑OSS‑20B MoE 在昇腾 NPU 上的部署与性能实测:开发者视角的多精度推理优化实践
  • 后端服务弹性伸缩实践实践:让系统更高效、稳定
  • 网站的比较做网站哪家便宜
  • 寻找昆明网站建设手机网站 跳转
  • 建站网址大全56做视频网站
  • jsp网站开发教程响应式布局是什么意思
  • dede中英文企业网站建筑方案设计案例
  • 常见网站颜色搭配技术导航源码
  • 简单响应式网站设计代码翻书效果的网站
  • 网站seo方案建议电影网站怎么做优化
  • 网站开发外包不给ftp外贸推广方式
  • 百度 网站 说明qq是哪家公司运营的
  • 门头设计效果图网站西安学网站开发哪边好
  • 公司网站模板源代码沈阳百度seo
  • 房产网站怎么做才能吸引人怎样做自己网站
  • 不错宁波seo公司网站优化 推广
  • 好的网站首页建设公司网站托管费用 优帮云
  • 企业网站策划方案模板品牌设计网站建设
  • 微科技h5制作网站模板下载网站建设龙卡要审批多久时间
  • 响应式 网站 设计软件苏州网站开发网站开发费用
  • 要建网站建立平台的目的
  • ui在线设计网站在线设计网站海报
  • 网站建设和网络推广外包wordpress 云解析视频教程
  • 九寨沟城乡建设官方网站drupal 做的网站
  • 站长工具网站测速微信红包开发平台
  • 网站关键词排名优化系统通信公司网站建设
  • 做网站和APP需要注册公司吗全球网站访问量排名
  • 电商企业网站源码邢台网站123
  • 必要这个网站怎么样域名买了之后如何建设网站
  • 网站建站论坛装修计算器在线计算