Одним із швидких способів отримання пар ключових значень в інспектора Unity є визначення класу вхідного циклу, який можна серіалізувати, а потім використовувати масив або Список <> їх. наприклад ...
public class SpellAnimationMap : ScriptableObject
{
[System.Serializable]
public class SpellAnimationEntry
{
public Spell spell;
public AnimationClip animation;
}
public SpellAnimationEntry[] spellAnimations;
}
Автоматично це дасть вам список змін у інспекторі, де ви можете ввести ключ і значення, не потребуючи написання спеціального інспектора.
Результат виглядає приблизно так:
(Один фокус: якщо серіалізований клас запису містить поле "Ім'я", цей рядок буде відображатися замість м'якого заголовка "Елемент 0". Корисно, якщо у вас є складніші дані, ви хочете мати можливість ефективно переходити.)
Здійснення цього ScriptableObject дозволяє розглядати його як актив, поділений між типами / екземплярами сутності, яким потрібен той самий набір анімації, уникаючи накладних копій списку для кожного. (Інші класи, як правило, серіалізуються в екземплярі в Unity). Щоб пройти цей маршрут, вам потрібно буде додати невеликий сценарій редактора, який дозволить вам створювати екземпляри з них у папці Активи .
Редагувати: тепер це ще простіше - ви можете просто додати цей атрибут вище свого ScriptableObject:
[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]
Це ставить ScriptableObject у ваше меню Create, наприклад:
Ви можете додатково зробити масив приватним і серіалізованим, щоб він все ще з'являвся в інспекторі, але додати публічний словник (або приватний словник із загальнодоступним методом GetAnimation (Spell spell)), щоб клієнти споживали для більш ефективних пошуку. У своєму методі OnEnable (), SpellAnimationMap може повторити через заселений інспектором масив, щоб створити цей словник один раз, знову поділивши перевагу між усіма клієнтськими екземплярами. (Зверніть увагу, що OnEnable () також викликається в редакторі під час першого створення ресурсу, тому переконайтеся, що ваш масив є недійсним, перш ніж спробувати його прочитати)
Нарешті, ви можете додати стільки даних у цей тип даних, скільки вам потрібно. Це може містити, наприклад, збірну інформацію, або будь-яку кількість інших бітів даних, які ви хочете пов’язати з ключем правопису.
Можна також написати спеціальні інспектори для заповнення полів Словник <,> безпосередньо, але я створюю враження, що це нерозумно плавно працювати.