如何 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
}
#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
}