Код: Выделить всё
[System.Serializable]
public class MovementVariableModifierData
{
[ItemType]
public string modifierItemID = "";
public int modifierItemIdx;
[SerializeField]
public Dictionary multipliers = new Dictionary();
[SerializeField]
public Dictionary addends = new Dictionary();
}
Код: Выделить всё
public class MyClass
{
Modifiers = new MovementVariableModifierData[0];
}
Код: Выделить всё
// Custom Editor Code:
// read old values and copy them to new list
tmpModifiers = new List(Modifiers)
for (int i = 0; i < tmpModifiers.Count; i++)
{
// MODIFY Int and String - these get saved
tmpModifiers[i].modifierItemIdx = EditorGUILayout.Popup(new GUIContent("Item ID:"), tmpModifiers[i].modifierItemIdx, itemTypes);
tmpModifiers[i].modifierItemID = itemTypes[tmpModifiers[i].modifierItemIdx];
// MODIFY Dictionary - Doesn't get saved
// Set default value
if (!tmpModifiers[i].multipliers.ContainsKey("Key1")) tmpModifiers[i].multipliers["Key1"] = 1.0f;
tmpModifiers[i].multipliers["Key1"] = EditorGUILayout.FloatField(new GUIContent("Key 1:"), tmpModifiers[i].multipliers["Key1"]);
// There's many more of these in the loop but they all use this exact pattern.
}
Modifiers = tmpModifiers.ToArray();
Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-complex