Я делаю дуэльную игру на Диком Западе, основанную на наборе мертвых. У вас есть слово, чтобы написать в определенное количество времени. Вы выиграете, если вы наберете слово вовремя, вы проиграете, если вы введете его неправильно / нажмете не ту кнопку или если время истечет.
В настоящее время у меня все работает нормально. Небольшая проблема, однако, связана с тем, как я имею дело с отображением букв, которые вы должны печатать на экране.
Каждый символ хранится в массиве, который циклично отображается и отображается на экране. Когда игрок нажимает правильную кнопку, соответствующий дисплей должен стать красным, что он делает большую часть времени. Время, когда это не так, когда есть повторяющиеся символы.
Например, если я набираю слово «дантист», когда я набираю первую букву «t», она не станет красной. Однако, когда я добираюсь до второго т и нажимаю его, оба становятся красными. Я предполагаю, что это потому, что я зацикливаюсь на каждом отображаемом символе и проверяю, нажимается ли соответствующий ввод, и потому что есть два, и я могу набрать только один символ за раз, когда один всегда ложный, который «перекрывает» тот, который является правда. Я не уверен, как реализовать решение с учетом того, как я в настоящее время работаю, поэтому любая помощь приветствуется!
Код:
if (Duelling)
{
if (currentWord.Count > 0 && Input.inputString == currentWord[0].ToLower())
{
print(Input.inputString);
string pressedKey = currentWord[0];
currentWord.Remove(currentWord[0]);
}
else if (Input.inputString != "" && Input.inputString != currentWord[0].ToLower())
{
DuelLost();
}
if (currentWord.Count <= 0)
{
DuelWon();
}
foreach(Transform Keypad in keyDisplay.transform)
{
//print(Keypad.Find("KeyText").GetComponent<Text>().text);
Keypad.Find("KeyText").GetComponent<Text>().color = currentWord.Contains(Keypad.Find("KeyText").GetComponent<Text>().text) ? Color.black : Color.red;
}
}