- changed status to open
ValueDropdownAttribute for Dictionary's key?
Hi, I am trying to implement an object struct like json[see the code below], members are stored in a dictionary. The dictionary's key is a string, it is inconvenient to type a string and easy to make a mistake, hope the ValueDropdownAttribute can work for it. The enum type can show a dropdown, but the enum keys are hard coded.
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
public enum MemberKey
{
Health,
Power,
Energy
}
[CreateAssetMenu]
public class MemberKeyTable : ScriptableObject
{
public List<string> keys = new List<string>();
}
[CreateAssetMenu]
public class DomObject : SerializedScriptableObject
{
[AssetsOnly]
public DomObject Parent;
public Dictionary<MemberKey, DomObject> Members = new Dictionary<MemberKey, DomObject>();
[AssetsOnly]
public MemberKeyTable MemberKeys;
//Need a DictionaryKeyDropdown attribute from MemberKeys
public Dictionary<string, DomObject> Members1 = new Dictionary<string, DomObject>();
}
Comments (6)
-
-
- changed milestone to 1.1.0.0
-
reporter hi, json format also contains List data struct. If 1.1 can support List, that will be perfect, at that time all base data structs are supported.
-
I'm afraid I'm not sure exactly what you're talking about. Odin supports lists in almost every way I can imagine lists being supported. Could you clarify what you mean by that?
-
reporter The demo code in Odin only shows some scalar properties and the ValueDropdownAttribute's code document does not mention List too, I thought List is not supported as Dictionary. Sorry, now I know Odin supports List.
-
- changed status to resolved
- Log in to comment
I'm afraid this isn't something you can do right now. It's something we want to allow people to do, but right now we would have to get really (really) hacky to do it. However, the property system rework planned for patch 1.1 is intended to accomodate exactly cases like this, so at that point, support will be added for this.