- 想要動態列表的字串或名稱屬性要加上元資料設定。
- 在DefaultEditor.ini裡設定自訂屬性控制項為UnrealEd.PropertyInputCombo。
- 覆寫UObject的GetDynamicListValues()函式以自訂選項。第一個參數即為元資料設定的值。第二個參數為要傳回的選項。
範例
動態列表也可用於結構屬性的欄位,以下程式碼中的MyString和在MyStruct裡的MyName都有設定動態列表。如果使用屬性視窗檢視這個類別所建立的原型(Archetype),可以發覺它們的控制項會變成是下拉式選單。
class MyDynamicList extends Object native; var() string MyString <DynamicList=ListName>; struct native MyStructType { var() name MyName <DynamicList=ListName>; }; var() MyStructType MyStruct; cpptext { virtual void GetDynamicListValues(const FString& ListName, TArray<FString>& OutValues) { OutValues.AddItem( TEXT("Option 1") ); OutValues.AddItem( TEXT("Option 2") ); OutValues.AddItem( TEXT("Option 3") ); } }在DefaultEditor.ini檔中設定相關屬性控制項為UnrealEd.PropertyInputCombo。
[UnrealEd.CustomPropertyItemBindings] CustomPropertyInputProxies=(PropertyPathName="MyGame.MyDynamicList: MyString",PropertyItemClassName="UnrealEd.PropertyInputCombo") CustomPropertyInputProxies=(PropertyPathName="MyGame.MyDynamicList: MyStruct.MyName",PropertyItemClassName="UnrealEd.PropertyInputCombo")
沒有留言:
張貼留言