Uma maneira rápida de obter pares de valores-chave no inspetor do Unity é definir uma classe de entrada serializável e, em seguida, usar uma matriz ou Lista <> delas. por exemplo...
public class SpellAnimationMap : ScriptableObject
{
[System.Serializable]
public class SpellAnimationEntry
{
public Spell spell;
public AnimationClip animation;
}
public SpellAnimationEntry[] spellAnimations;
}
Automaticamente, isso fornecerá uma lista redimensionável no inspetor, onde é possível inserir a chave e o valor, sem a necessidade de escrever um inspetor personalizado.
O resultado fica assim:
(Um truque: se a classe de entrada serializada contiver um campo "Nome", essa sequência será exibida em vez dos títulos branda "Elemento 0". Útil se você tiver dados mais complexos, poderá navegar com eficiência.)
Tornar isso um ScriptableObject permite tratá-lo como um ativo compartilhado entre tipos / instâncias de entidade que precisam do mesmo conjunto de animações, evitando a sobrecarga de duplicar a lista de cada um. (Outras classes tendem a ser serializadas por instância no Unity). Para seguir esse caminho, você precisará adicionar um pequeno script de editor para criar instâncias desses na sua pasta Assets .
Edit: agora é ainda mais fácil - você pode adicionar este atributo acima do seu ScriptableObject:
[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]
Isso coloca o ScriptableObject no menu Criar, da seguinte maneira:
Opcionalmente, você pode tornar a matriz privada e serializada para que ela apareça no inspetor, mas adicione um Dicionário público (ou dicionário particular com um método público GetAnimation (Spell)) para os clientes consumirem para pesquisas mais eficientes. No método OnEnable (), o SpellAnimationMap pode percorrer sua matriz preenchida pelo inspetor para criar esse dicionário mais uma vez, compartilhando novamente o benefício entre todas as instâncias do cliente. (Observe que OnEnable () também é chamado no editor quando o ativo é criado pela primeira vez; verifique se sua matriz é não nula antes de tentar lê-la)
Por fim, você pode adicionar esse tipo de dados de entrada conforme necessário. Também pode incluir a pré-fabricada, por exemplo, ou qualquer número de outros bits de dados que você deseja vincular à chave ortográfica.
Também é possível escrever inspetores personalizados para preencher diretamente os campos Dictionary <,>, mas a impressão que eu tenho é que é muito exigente trabalhar sem problemas.