本來在這裏寫這個東西感覺不是很高端。有些時候我們匆匆忙忙的寫很多東西,很多時候都是基於熟悉的緣故。一次次的重複,譬如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