如何检查用户输入是否与文本文件中的单词匹配


using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Security.Cryptography.X509Certificates;
using UnityEngine;
using UnityEngine.UI;
public class LetterRandomiser : MonoBehaviour
{
public char[] characters; 
public Text textbox; 
public InputField mainInputField;
void Start() /*when the game starts*/
{
char c = characters[Random.Range(0,characters.Length)];
textbox.text = c.ToString(); 
}
void Update()
{
string[] lines = System.IO.File.ReadAllLines(@"C:UsersllucDownloadswords_alpha.txt");
foreach (string x in lines)
{
if (Input.GetKeyDown(KeyCode.Return) 
&& mainInputField.text.Contains(textbox.text) == true
&& mainInputField.text.Contains(x) == true)
{
char c = characters[Random.Range(0, characters.Length)];
textbox.text = c.ToString();
mainInputField.text = "";
}
else if (Input.GetKeyDown(KeyCode.Return) 
&& mainInputField.text.Contains(textbox.text) == false
&& mainInputField.text.Contains(x) == false)
{
mainInputField.text = "";
}
}
}
}

参考我的游戏

没有失误,但当我运行游戏时,它非常滞后。我想这是因为程序正在读取文本文件words_alpha.txt,其中包含所有英文单词。

然而,即使它很滞后,当我输入一个完全随机的单词,与文本文件中的任何单词都不匹配时,程序仍然会接受这个单词。

我的代码有问题。。。

我想让我的代码做什么?

  • 接受包含输入框上方显示的随机生成字母的单词。(有效(

  • 接受英语词典中的有效单词(在我的情况下,这是一个名为words_alpha.txt的文本文件(。(这不起作用(

您应该从Start()方法而不是Update()读取文件,因为文件只需要读取一次,而不是每帧。这将消除滞后。

此外,您在每个帧上循环浏览文件,这是不必要的。你应该移动

if (Input.GetKeyDown(KeyCode.Return))

到CCD_ 4环路之外。您可能应该在if语句中调用另一个函数。Update()可能看起来更像:

void Update()
{
if (Input.GetKeyDown(KeyCode.Return) &&
mainInputField.text.Contains(textbox.text))
{
wordIsInFile(mainInputField.text);
//Remaining code that you want to use
}
else
{
//whatever needs to be done in the else statement
}
}

然后是在数组中循环的函数:

void wordIsInFile(string word)
{
foreach (var item in lines)
{
if (word == item)
{
//Perform tasks on word
//and whatever else
}
}
}

只需在Start()之外声明string[] lines,但在Start()中初始化它,以确保它是一个全局变量。这将消除滞后,并且效率更高,因为除非按下KeyCode,并且mainInputField包含一些字符串,否则您不会一直在数组中循环。

相关内容

  • 没有找到相关文章

最新更新