繁体   English   中英

如何从单独的 class 中提取字符串,同时将 class 保留在我的主列表中(C#,Unity)

[英]How can I pull a string from a separate class while keeping the class in a list in my main (C#, Unity)

我觉得我应该先说,我仍然是一个初学者并且了解我,我很可能会忘记一些在这个过程中非常简单和过于复杂的东西。 但尽管如此,我一直无法弄清楚这一点。

我正在尝试创建一个统一的对话系统,显示一串文本和一个精灵。 但是,我不确定如何从单独的 class 中提取字符串,同时确保我可以将 class 保留在列表中,以便我可以一起循环浏览文本和精灵。 目前我试图从中提取的 class 看起来像这样:

public class DialogueInfo
{
    public Sprite emotion;
    public string Words;
}

该列表如下所示:

public List<DialogueInfo> dialogueInfo = new List<DialogueInfo>();

我正在尝试在这里使用“Words”字符串:

NPC.dialogLines = dialogueInfo.Words;

然而,这不起作用。 我收到一条错误消息,说“'List<dialogueHolder.DialogueInfo>' 不包含 'Words' 的定义并且没有可访问的扩展方法......”有什么建议吗? 整个过程可能是一种非常糟糕的做事方式,如果是这样,我们将不胜感激。 如果需要更多上下文,我很乐意提供。

注意:通过使用列表,我只是想保持如下所示的格式: Unity 的列表/数组格式,但在单个元素中同时包含文本和精灵如果我必须使用不同的方法,那没关系。

您的变量名dialogInfo具有误导性。 它不是一个dialogInfo ,它是一个盒子(一个列表),里面有很多 dialogInfo 。

让我们将其dialogInfoList

public List<DialogueInfo> dialogueInfoList = new List<DialogueInfo>();

提取所有单词

如果要获取所有元素的所有“单词”属性,可以为此使用 linq:

NPC.dialogLines = dialogueInfoList.Select(dialogInfo => dialogInfo.Words);

根据NPC.dialogueLines的类型(例如 List),您可能需要在Select() .ToList() ) 。

更简单:只需链接所有原始列表

你提到你可能会错过一些更简单的东西。

这真的取决于你想要实现什么,这个问题不是很清楚,但是用NPC object 保留所有“DialogInfo”列表怎么样?

就像是:

NPC.DialogueInfoList = dialogueInfoList;

DialogueInfoListList<DialogueInfo>类型的属性/字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM