Как оптимизировать код для юнити?
У меня есть код, который показывает определённый текст. Если игрок не был в комнате, то пишется "???".
Как можно это оптимиизировать?
else if (item == "bathroom" && PlayerPrefs.GetInt("bathroomOpenTime") == 1){_textInfo.text = "Войти в ванную";}
else if (item == "bathroom" && PlayerPrefs.GetInt("bathroomOpenTime") == 0){_textInfo.text = "???";}
else if (item == "bedroom" && PlayerPrefs.GetInt("bedroomOpenTime") == 1){_textInfo.text = "Войти в спальню";}
else if (item == "bedroom" && PlayerPrefs.GetInt("bedroomOpenTime") == 0){_textInfo.text = "???";}
else if (item == "kitchen" && PlayerPrefs.GetInt("kitchenOpenTime") == 1){_textInfo.text = "Войти на кухню";}
else if (item == "kitchen" && PlayerPrefs.GetInt("kitchenOpenTime") == 0){_textInfo.text = "???";}
else if (item == "basement" && PlayerPrefs.GetInt("basementOpen") == 0){_textInfo.text = "???";}
else if (item == "basement" && PlayerPrefs.GetInt("basementOpen") == 1){_textInfo.text = "Войти в подвал";}
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Составляем карту (словарь) с данными, где будут данные представленные в виде string => string. Схематично будет так:
'bathroom' => 'ванную',
'bedroom' => 'спальню',
'kitchen' => 'кухню',
'basement' => 'подвал'
Т.к. везде есть слово Time, то для basement лучше тоже так сделать.
В итоге весь год можно будет сократить до такого:
if (PlayerPrefs.GetInt($"{item}OpenTime") == 1)
_textInfo.text = $"Войти в {dictionary[item]}";
else
_textInfo.text = "???";
Конечно можно ещё сделать доп проверку о наличии вообще такого ключа и значения по ключу для словаря, типа dictionary.TryGetValue(....), а потом использовать if/else