私はUnity2Dで自分のゲームのクエストシステムを作っています。私は辞書の中にすべての私の異なる種類のクエストを保存しましたが、ランダムに選んだクエストは5つしかありません。私は最初にネストされたループを使用して5つの乱数を取得し、次に辞書内の要素にアクセスする別のforeachループを使用し、最後に選択したすべてのクエストを印刷するために別のforループを使用することを計画しました。しかし、私は問題を抱えています。なぜなら、25回、5回ではなく25回印刷したからです.2回目のループから脱出して3回目のループに入る方法はありますか?ありがとう!C#ネストされたforループから抜け出し、新しいループを続けるには?
void Start()
{
// missions
missions.Add("Visit Mural Stops x ", 1);
missions.Add("Collect Cards x ", 2);
missions.Add("Fight Monsters x", 3);
missions.Add("Collect Coins x ", 4);
missions.Add("Collect Items x", 5);
missions.Add("Fight SBM Boss x ", 6);
missions.Add("Find Mural Stops x", 7);
var numbers = new List<int>(missions.Count);
for (int i = 0; i < missions.Count; i++)
{
numbers.Add(i);
}
var randomNumbers = new int[text.Length];
// text.Length is always 5, as I only have 5 mission texts
for (int i = 0; i < randomNumbers.Length; i++)
{
var thisNumber = Random.Range(1, numbers.Count);
randomNumbers[i] = numbers[thisNumber];
numbers.RemoveAt(thisNumber);
//Debug.Log("random " + randomNumbers[i]);
foreach (KeyValuePair<string, int> pairs in missions)
{
if (pairs.Value == randomNumbers[i])
{
//Debug.Log(pairs.Key); // print out 5 missions
missionText = pairs.Key;
for (int j = 0; j < text.Length; j++)
{
text[j].text = missionText; // it only print out the last picked quests
Debug.Log(missionText); // each picked quest is printed out 5 times instead of once
// how do i print out only 5 times inside this loop?
}
}
}
}
}
とほぼ同じです。['break'](https://docs.microsoft.com/en-us/dotnet/csharp)/language-reference/keywords/break)ループのうち... – maccettura
あなたの最後のループは何を意味していますか?あなたはjをループしますが、実際には意味をなさないjを使用することはありません。おそらくあなたが5倍をあなたが望んでいるようにしている理由はおそらく5回印刷するように言っているだけです...。 – Chris
@maccettura私は(int j = 0; j
Daaenerys