關於UEC++中FText、FString與FName

MIPeach發表於2024-06-17

FText
用於本地化和使用者介面顯示文字。可以方便地將遊戲文字翻譯成不同的語言。

FName
FName在UE中的功能與C#中的字串池有相似之處,但它們的內部實現和用途有些不同。
FName是一種輕量級的、不變的識別符號型別,主要用於高效地處理字串的比較和儲存。
特點:
不可變: 一旦建立,FName的值不能改變。
高效比較: 兩個FName物件之間的比較非常高效,因為它們內部使用索引進行比較,而不是逐字元比較。
記憶體最佳化: FName透過內部字串表(類似於字串池)儲存唯一的字串副本,從而減少記憶體開銷。
雜湊表支援: 適合用作鍵值對中的鍵或其他需要快速查詢的場景。

在C#中,字串池(string intern pool)是一個全域性表,用於儲存所有唯一的不可變字串字面量。當建立新的字串時,如果字串內容相同,則引用池中的現有字串。
特點:
不可變: C#中的字串也是不可變的,一旦建立了就不能改變其內容。
自動駐留: 編譯時,所有字串字面量會自動新增到字串池中。
手動駐留: 可以使用String.Intern方法將執行時建立的字串新增到池中。
記憶體最佳化: 透過共享相同內容的字串例項來節省記憶體。

FString:
用於非本地化的常規字串操作,例如檔案路徑、日誌輸出、內部資料處理。
特點:
提供字串操作功能(如拼接、查詢、替換等)。
開銷相對較低,適合頻繁的字串操作。
檔案路徑、配置引數等不需要本地化的文字。

相關文章