特定のキーワードがチャットボットの出力と一致した後もスコアを維持しようとしています。私はすべての試合のスコアを数えるようにしましたが、同じキーワードと一致するものがあれば、再び一致させたくありません。私はリストからキーワードを削除することでこれをやろうとしていますが、スコアを追加し続けます。キーワードを回答と一致させた後にリストからキーワードを削除する
つまり、チャットボットが「ハイ」と言っても、1回だけスコアを追加します。
私はこの
public void SendQuestionToRobot()
{
if (string.IsNullOrEmpty(inputField.text) == false)
{
string answer = bot.getOutput(inputField.text);
robotOutput.text = answer;
inputField.text = "press enter to type";
List<string> sPattern = new List<string> { "hi", "a painkiller" };
foreach (string s in sPattern)
{
if (Regex.IsMatch(answer, s, RegexOptions.IgnoreCase))
{
controller.score += 5;
sPattern.Remove(s);
break;
}
}
}
}
と
public void SendQuestionToRobot()
{
if (string.IsNullOrEmpty(inputField.text) == false)
{
string answer = bot.getOutput(inputField.text);
robotOutput.text = answer;
inputField.text = "press enter to type";
List<string> sPattern = new List<string> { "hi", "a painkiller" };
foreach (string s in sPattern)
{
if (Regex.IsMatch(answer, s, RegexOptions.IgnoreCase))
{
controller.score += 5;
break;
}
}
foreach (string s in sPattern)
{
if (Regex.IsMatch(answer, s, RegexOptions.IgnoreCase))
{
sPattern.Remove(s);
}
}
}
}
をトリングだが、どちらの場合も、スコアが
毎回リストを再作成します。あなたはそれを一生長いものに一度ロードする必要があります(グローバル変数、クラスメンバ) – pm100
完璧、それは働いた!どうもありがとうございます! – Piotr
代わりに 'for'ループを使わない方がいいでしょう。 – garfbradaz