如何 Unreal Engine C++ CustomStruct RemoveAt 或删除 UE4

How to Unreal Engine C++ CustomStruct RemoveAt or Remove UE4

#1 或 #2

该功能无法正常工作,但可以与 inEditor 蓝图配合使用 (写运算符==)

.h 
TArray<FStruct> StructArray

.cpp
void Func(FStruct struct_2)
{ 
  const uint32 Index = SturctArray.Find(struct_2); // Always Value = 0
  if(StructArray[Index] == struct_2)
  {
   StructArray.RemoveAt(struct_2) // #1
   StructArray.Remove(Index) // #2
   }
}

调用 Func 将创建传入的 FStruct 对象的副本。StructArray 永远不会包含为函数 Func 制作的副本。为使其工作,请 Func 使用不创建副本的内容。喜欢参考。

在检查TArray.Find()的结果是否有效之前不要使用它。

TArray.RemoveAt() 需要一个索引,您的代码为它提供了一个对象。

TArray.Remove() 期望在用于声明 TArray 的相同类型的项目上,您的代码为其提供索引。

#1

void Func(FStruct& struct_2)
{ 
  const uint32 Index = StructArray.Find(struct_2);
  if (Index != INDEX_NONE)
  {
    StructArray.RemoveAt(Index); // #1
  }
}

#2

void Func(FStruct& struct_2)
{ 
  StructArray.Remove(struct_2); // #2
}