Un modo rapido per ottenere coppie chiave-valore nella finestra di ispezione di Unity consiste nel definire una classe di voci serializzabile e quindi utilizzare un array o Elenco <> di esse. per esempio...
public class SpellAnimationMap : ScriptableObject
{
[System.Serializable]
public class SpellAnimationEntry
{
public Spell spell;
public AnimationClip animation;
}
public SpellAnimationEntry[] spellAnimations;
}
Automaticamente, questo ti darà un elenco ridimensionabile nella finestra di ispezione in cui puoi inserire la chiave e il valore, senza bisogno di scrivere una finestra di ispezione personalizzata.
Il risultato è simile al seguente:
(Un trucco: se la classe di voce serializzata contiene un campo "Nome", quella stringa verrà visualizzata al posto delle intestazioni insignificanti "Elemento 0". Utile se si dispone di dati più complessi che si desidera poter navigare in modo efficiente.)
Rendendolo uno ScriptableObject ti consente di trattarlo come un Asset condiviso tra tipi / istanze di entità che richiedono lo stesso set di animazioni, evitando il sovraccarico di duplicare l'elenco per ciascuno. (Altre classi tendono ad essere serializzate per istanza in Unity). Per seguire questa strada, dovrai aggiungere un piccolo script dell'editor che ti consenta di crearne istanze nella cartella Risorse .
Modifica: ora è ancora più semplice: puoi semplicemente aggiungere questo attributo sopra ScriptableObject:
[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]
Ciò inserisce ScriptableObject nel menu Crea, in questo modo:
Puoi facoltativamente rendere l'array privato e serializzato in modo che venga ancora visualizzato nella finestra di ispezione, ma puoi aggiungere un dizionario pubblico (o un dizionario privato con un metodo GetAnimation (incantesimo) pubblico) che i clienti possano utilizzare per ricerche più efficienti. Nel suo metodo OnEnable (), SpellAnimationMap può scorrere attraverso il suo array popolato da inspector per creare questo dizionario una volta, condividendo nuovamente il vantaggio tra tutte le istanze client. (Si noti che OnEnable () viene anche chiamato nell'editor quando l'asset viene creato per la prima volta, quindi assicurarsi di verificare che l'array sia non null prima di provare a leggerlo)
Infine, puoi aggiungere tutto questo tipo di dati della voce di cui hai bisogno. Potrebbe includere anche il prefabbricato, ad esempio, o qualsiasi numero di altri bit di dati che si desidera collegare alla chiave ortografica.
È anche possibile scrivere ispettori personalizzati per popolare direttamente i campi del dizionario <,>, ma l'impressione che ottengo è che è complicato funzionare senza problemi.