如果有人能告诉我我做错了什么,我会非常感激的!
基本上我有一个字谜。玩家可以从一个字母列表中挑选,然后提交它们,看看它是否与黑板上的单词匹配。这就是在我们进入这个代码之前所发生的事情:
中的单词
如果字符列表与"wordsToFind“列表中的字符串匹配,那么我希望从所述列表中删除字母,并将该单词放入另一个名为"foundWords"....Repeating进程的列表中,直到player找到所有单词并击败该级别为止。一切似乎都很顺利,直到我开始删除提交的信件.从检验员看来一切都很好,我看着字母被添加,我看到它与单词匹配,然后这些字母被移除,单词也是如此。以前没有见过这种类型的错误,很抱歉,如果这很简单。下面是所讨论的代码:
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);
}
}
}
}发布于 2019-10-24 05:48:24
您不能在迭代列表的同时修改它。你的台词:
wordsToFind.Remove(tempWord);会运行得很好,但是在那之后,由于列表被修改了,所以它不能在上面迭代并抛出InvalidOperationException。
https://stackoverflow.com/questions/58534773
复制相似问题