簡體   English   中英

C#如何擺脫嵌套的for循環並繼續新的循環?

[英]C# How to break out of a nested for loop and continue with a new loop?

我正在為Unity2D中的游戲制作一個任務系統。 我將所有不同類型的任務存儲在字典中,但只有5個任務可供玩家隨機選擇。 我首先使用嵌套循環獲得5個隨機數,然后使用另一個foreach循環訪問字典中的元素,最后計划使用另一個for循環打印出所有選擇的任務。 但是,我遇到了問題,因為它打印了25次而不是5次。是否有辦法擺脫第二個循環並進入第三個循環? 謝謝!

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?
                }
            }
        }
    }
}

您的問題是最后一個循環:

for (int j = 0; j < text.Length; j++)
{
    text[j].text = missionText;
    Debug.Log(missionText);
}

這將運行Debug.Log五次-對於j的每個值一次(您之前說過text.Length始終為5)。

在評論中,您說要將所有選擇的任務打印到我的文本中。

因為您的randomNumbers數組的長度與文本的長度相同,所以您已經有了文本的索引i ,實際上randomNumbers的全部要點似乎是為每個text條目生成一個隨機數。 因此,我引用的不是您要執行的循環:

text[i].text = missionText;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM