Целью является создание генератора случайных предметов, в данном случае зелий. Все работает хорошо, пока я не попытаюсь заставить тип зелья, который выбирается случайным образом, фактически повлиять на статистику, которую они увеличивают, и руководство, за которым я следую, не прошло.
В ошибках указано, что таких имен, как HEALTH и ENERGY, в этом контексте не существует, а также то, что «Не удается неявно преобразовать тип« void »в« BasePotion.PotionTypes »»
Я следую руководству по созданию RPG, чтобы попытаться выучить C #. Я следил за этим до этого момента, но решил расширить код, который мы делали.
Первоначально у меня были операторы if в их собственной функции, но это дало ошибку «ожидаемый идентификатор».
private void CreatePotion() {
newPotion = new BasePotion();
newPotion.PotionType = ChoosePotionType();
newPotion.ItemName = newPotion.PotionType.ToString() +" POTION";
newPotion.ItemID = Random.Range(1,100);
if (newPotion.PotionType == HEALTH) {
newPotion.Stamina = Random.Range(1,11);
newPotion.Endurance = Random.Range(1,11);
newPotion.Strength = 0;
newPotion.Intellect = 0;
}
else if (newPotion.PotionType == ENERGY){
newPotion.Stamina = 0;
newPotion.Endurance = 0;
newPotion.Strength = Random.Range(1,11);
newPotion.Intellect = Random.Range(1,11);
}
else if (newPotion.PotionType == STAMINA){
newPotion.Stamina = Random.Range(1,11);
newPotion.Endurance = 0;
newPotion.Strength = 0;
newPotion.Intellect = 0;
}
else if (newPotion.PotionType == ENDURANCE){
newPotion.Stamina = 0;
newPotion.Endurance = Random.Range(1,11);
newPotion.Strength = 0;
newPotion.Intellect = 0;
}
else if (newPotion.PotionType == STRENGTH){
newPotion.Stamina = 0;
newPotion.Endurance = 0;
newPotion.Strength = Random.Range(1,11);
newPotion.Intellect = 0;
}
else if (newPotion.PotionType == INTELLECT){
newPotion.Stamina = 0;
newPotion.Endurance = 0;
newPotion.Strength = 0;
newPotion.Intellect = Random.Range(1,11);
}
}
Операторы if - это строки с ошибками.
Я действительно не знаю, сколько нужно, чтобы воспроизвести проблему, но вот сценарий BasePotion, из которого это происходит.
public enum PotionTypes {
HEALTH,
ENERGY,
STRENGTH,
ENDURANCE,
STAMINA,
INTELLECT
}
private PotionTypes potionType;
private int spellEffectID;
public PotionTypes PotionType {
get { return potionType; }
set { potionType = value; }
}
public int SpellEffectID {
get { return spellEffectID; }
set { spellEffectID = value; }
}
У меня есть другой, почти такой же сценарий, за исключением операторов if для генерации брони таким же образом, как это, и он работает, как и ожидалось, включая назначение Type таким же образом, как я в этом сценарии.
Я не могу понять, в чем проблема, но если у кого-то есть лучший способ решить эту проблему, это тоже будет полезно.