Я внедряю базовую систему навыков и атрибутов, хотя у меня есть вторые мысли о том, как мне это сделать.
Например, я мог бы использовать Dictionary / HashMap, который использует перечисления SkillType для представления ключей, и целочисленные значения, представляющие значения. Но я должен сделать это?
public class Skills
{
public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value.
}
vs.
public class Skills
{
public int LongBlade, Armor, Marksman; //...etc
}
Я хотел бы знать преимущества безопасности типов здесь, а не просто использовать основные целые числа. Любые рекомендации?
interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };
, на самом деле ...Ответы:
Если в конечном итоге будет:
затем я начинаю предпочитать гибкость строковых или целочисленных ключей в словаре вместо отдельных полей экземпляра или даже словаря с ключом enum.
Мои рассуждения-- Потому что вы скоро можете понять ...
... в этот момент словарь со строковыми или целочисленными ключами становится более естественным, чем необходимость поддерживать значения перечисления или длинный список полей экземпляра самостоятельно. Однако указанный инструмент всегда можно написать для генерации кода на C #, так что вы сможете найти счастливый гибрид.
Если сложность вашей игры будет довольно простой, а разнообразие навыков - небольшим, то управление полями экземпляров вручную (вместо словаря и перечисления) кажется более удобным и позволяет избежать уровня косвенности как во время выполнения, так и при «нажатии клавиши» - время.
источник