【发布时间】:2015-12-10 04:04:15
【问题描述】:
所以我已经停止了这个我想不出的解决方案的问题,虽然我认为我在另一个项目上做了同样的事情,但我现在忘记了它,但我丢失了文件..
问题是,我正在编写一个对话系统,它有一个答案行,最多 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);
}
}
所以问题是,我如何使该循环查找与 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>();
}
提前致谢,我愿意学习如何工作!
【问题讨论】:
-
用 ForEach 代替 for,问题解决了。
-
只需在包装器内添加一个指向 subs 的链接。所以你可以检查它是否有一个子,然后再次迭代它。您可以递归地执行此操作。
标签: c# list loops dialog infinite