C#如何脱离嵌套循环并继续新的环路



我在Unity2d中为我的游戏制作了一个任务系统。我将所有不同类型的任务存储在词典中,但只有5个任务可以随机选择播放器。我首先使用嵌套环以获取5个随机数,然后另一个foreach循环访问字典中的元素,最后计划使用另一个循环来打印所有挑选的任务。但是,我有问题,因为它打印出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)。

在评论中,您说要将所有选择的任务打印到我的文本中。

您已经有针对文本的索引-i-因为您的randomNumbers数组与文本的长度相同,实际上randomNumbers的全部点似乎是为text的每个条目生成一个随机数。因此,我没有引用您想做的是:

text[i].text = missionText;

最新更新