C#如何遍历子列表中的所有列表?

0 c# loops dialog list infinite

所以我已经停止了这个问题,我无法想到哪个解决方案,它目前逃避了我的想法,我认为我在另一个项目上做了同样的事情,但我丢失了文件..

事实上,我正在编写一个具有一个答案行的对话系统,以及最多3个问题行,每个问题行在点击时都有另一个答案行,可以提出更多问题.

目标是能够建立一个对话系统,可以根据需要提供尽可能多的答案和问题.

但我不知道如何迭代它们,如果它是一个固定的数字,我可以为每个问题做一个for循环,但事实并非如此,我坚持下去!

以下代码是固定数量的ONE问题及其答案和另一个问题列表的示例:

for(int i = 0; i < dialogGiver.dialogLines.Count; i++)
{
    EditorGUILayout.LabelField("Line " + i, EditorStyles.boldLabel);

    dialogGiver.dialogLines[i].line = EditorGUILayout.TextField("Question", dialogGiver.dialogLines[i].line);
    dialogGiver.dialogLines[i].answer = EditorGUILayout.TextField("Answer", dialogGiver.dialogLines[i].answer);

    for (int e = 0; e < dialogGiver.dialogLines[i].dialogLines.Count; e++)
    {
        EditorGUILayout.LabelField("Line " + i + "/ Line " + e, EditorStyles.boldLabel);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我如何使该循环查找与DialogLine(以及DialogLine中的DialogLine子)一样多的子问题和子行.

这是DialogLine类:

public class DialogLine
{
    public string line;
    public string answer;

    /// <summary>
    /// This will enable the dialog giver to continue speaking of the same theme (use for long dialogs!)
    /// </summary>
    public List<DialogLine> dialogLines = new List<DialogLine>();
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢,我愿意学习如何工作!

kev*_*h93 5

    public void RecursiveMethod(List<DialogLine> list)
    {
         for(int i = 0; i < list.Count; i++)
         {
               EditorGUILayout.LabelField("Line " + i, EditorStyles.boldLabel);

               list[i].line = EditorGUILayout.TextField("Question", list[i].line);
               list[i].answer = EditorGUILayout.TextField("Answer", list[i].answer);
               RecursiveMethod(list[i].dialogLines);
         }
    }
Run Code Online (Sandbox Code Playgroud)

做得这么快.但它应该是这样的.它将继续遍历所有孩子,直到它遇到一个空的列表.

祝好运!