UE4单向链表的使用

本来在这里写这个东西感觉不是很高端。有些时候我们匆匆忙忙的写很多东西,很多时候都是基于熟悉的缘故。一次次的重复,譬如Slate,我已经写的厌烦了。没有什么动力了。

今天来了个需求,让做一个Slate动画效果。可是Slate做复杂动画如果不用UMG的话,其实是很费劲的。但是UMG我觉得UE公司做的很鸡肋,虽然可以使用,但是一些成熟的UI设计工具,相去甚远!好了废话太多,实现以下单向链表吧:


UE4简单的定义了一个TList模板类,如下:

/*----------------------------------------------------------------------------
TList.
----------------------------------------------------------------------------*/
//
// Simple single-linked list template.
//
template <class ElementType> class TList
{
public:


ElementType Element;
TList<ElementType>* Next;


// Constructor.


TList(const ElementType &InElement, TList<ElementType>* InNext = nullptr)
{
Element = InElement;
Next = InNext;
}
};

TList<FGuid>* NewElement = new TList<FGuid>(TaskStateMessage->TaskGuid, NULL);


使用举例:

//假设的数据源
TArray<int32> int32Arrary;
int32Arrary.Add(100);
int32Arrary.Add(50);
int32Arrary.Add(180);


TList<int32> *head, *temp;
//创建头结点,使用实际数据源中的某一个,int32Arrary[0]
head = temp = new TList<int32>(int32Arrary[0], NULL);


for (int32 i = 0; i < 2; i++)
{
//创建新节点
temp->Next = new TList<int32>(int32Arrary[i+1], NULL);
//初始化temp为上一个创建好的节点
temp = temp->Next;
}
//循环结束后整个链表就创建完成了


//只要节点指针p不为空,就继续打印
for (temp =head; temp !=NULL; temp = temp->Next)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::FromInt(temp->Element));
}

//结果:100->50->180



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章