Если бы кто-то мог сказать мне, что я делаю не так, я был бы очень благодарен!
По сути, у меня есть загадка со словом. Игрок может выбрать из списка букв, а затем отправить их, чтобы увидеть, соответствует ли оно слову на доске или нет. Вот что происходит, прежде чем мы получим этот код:
- Игрок нажимает кнопку с прикрепленной буквой (тип символа)
- символ отправляется в этот скрипт и добавляется в список
- Когда игрок отправляет больше букв, список символов увеличивается.
- Я проверяю, совпадают ли буквы в другом списке
Если список символовсопоставить строку в списке «wordsToFind», затем я хочу удалить буквы из указанного списка и поместить слово в другой список «foundWords» .... Повторять этот процесс, пока игрок не найдет все слова и не превзойдет уровень. Все, казалось, работало просто отлично, пока я не начал удалять отправленные письма .... Из инспектора все выглядит отлично, я наблюдаю, как буквы добавляются, я вижу, что они соответствуют слову, буквы затем удаляются и такслово. Не видел такого типа ошибки раньше, так что извините, если это просто. Вот этот код:
private const int maxLetters = 6;
public List<char> submittedLetters = new List<char>(maxLetters);
public List<string> wordsToFind = new List<string>();
public List<string> wordsFound = new List<string>();
/// <summary>
/// Update is called once per frame
/// </summary>
private void Update() {
ProcessLetters();
}
/// <summary>
/// Handles all letters being submitted and processes them
/// </summary>
private void ProcessLetters() {
if(submittedLetters.Count == 0) { return; }
string tempWord = null;
foreach (char letter in submittedLetters) {
if (wordsFound.Count >= 1) {
submittedLetters.Remove(letter);
}
tempWord += letter.ToString();
foreach (string word in wordsToFind) {
if (tempWord == word.ToUpper()) {
wordsFound.Add(tempWord);
wordsToFind.Remove(tempWord);
}
}
}
}