如何在C++中使用UKismetArrayLibrary::Array_Resize调整UE4 TArray大小
解决方案
推荐方案:直接使用TArray原生Resize方法
C++ 中的 TArray 容器本身自带 Resize 成员方法,行为和蓝图的 Array_Resize 完全一致,不需要额外依赖Kismet库,性能和写法都更优:
// 参数为调整后的目标数组大小 Items.Resize(10); // 示例:将Items数组大小调整为10
- 扩容场景下,新增的元素默认初始化为
nullptr,后续需要手动生成AItem对象赋值后再访问,避免空指针报错 - 缩容场景下,超出目标大小的元素会被从数组中移除,但不会自动销毁指针指向的AActor实例,如果需要同时销毁对象,要在Resize前遍历对应元素调用
Destroy()方法
特殊场景:需调用UKismetArrayLibrary的Array_Resize
你在头文件中看到的Array_Resize函数签名里的TArray<int32>参数,只是UE为了适配蓝图泛型函数做的反射占位声明,实际C++调用时支持任意类型的TArray传入,不需要做额外类型转换:
- 先引入对应头文件:
#include "Kismet/KismetArrayLibrary.h"
- 直接调用函数即可:
// 第一个参数传入你的TArray<AItem*>数组,第二个参数为目标大小 UKismetArrayLibrary::Array_Resize(Items, 10);
该方法的运行效果和蓝图的Array_Resize、TArray原生Resize完全一致。
内容的提问来源于stack exchange,提问作者neoluna
相关产品推荐
相关产品推荐

