Un moyen rapide d'obtenir des paires clé-valeur dans l'inspecteur Unity consiste à définir une classe d'entrée sérialisable, puis à utiliser un tableau ou une liste <> d'entre elles. par exemple...
public class SpellAnimationMap : ScriptableObject
{
[System.Serializable]
public class SpellAnimationEntry
{
public Spell spell;
public AnimationClip animation;
}
public SpellAnimationEntry[] spellAnimations;
}
Automatiquement, cela vous donnera une liste redimensionnable dans l'inspecteur où vous pourrez entrer la clé et la valeur, sans avoir besoin d'écrire un inspecteur personnalisé.
Le résultat ressemble à ceci:
(Une astuce: si la classe d'entrée sérialisée contient un champ "Nom", cette chaîne sera affichée à la place des en-têtes fades "Élément 0". Utile si vous avez des données plus complexes que vous souhaitez pouvoir naviguer efficacement.)
En faire un ScriptableObject vous permet de le traiter comme un actif partagé entre des types d'entités / instances qui ont besoin du même jeu d'animation, évitant ainsi la surcharge de duplication de la liste pour chacun. (Les autres classes ont tendance à être sérialisées par instance dans Unity). Pour suivre cette voie, vous devrez ajouter un petit script d'éditeur pour vous permettre de créer des instances de ceux-ci dans votre dossier Assets .
Edit: maintenant c'est encore plus facile - vous pouvez simplement ajouter cet attribut au-dessus de votre ScriptableObject:
[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]
Cela place le ScriptableObject dans votre menu Créer, comme ceci:
Vous pouvez éventuellement rendre le tableau privé et sérialisé afin qu'il s'affiche toujours dans l'inspecteur, mais ajouter un dictionnaire public (ou un dictionnaire privé avec une méthode publique GetAnimation (sort orthographique)) pour que les clients les utilisent pour des recherches plus efficaces. Dans sa méthode OnEnable (), le SpellAnimationMap peut parcourir son tableau rempli par l'inspecteur pour créer ce dictionnaire une fois, partageant à nouveau l'avantage entre toutes les instances clientes. (Notez que OnEnable () est également appelé dans l'éditeur lors de la création de l'actif, assurez-vous donc de vérifier que votre tableau n'est pas nul avant d'essayer de le lire)
Enfin, vous pouvez en ajouter autant que vous le souhaitez dans ce type de données d'entrée. Il peut également inclure le préfabriqué, par exemple, ou n'importe quel nombre d'autres bits de données que vous souhaitez lier à la clé de sort.
Il est également possible d'écrire des inspecteurs personnalisés pour remplir directement les champs Dictionnaire <,>, mais l'impression que j'ai est qu'il est difficile de travailler correctement.