【发布时间】:2017-01-06 07:20:52
【问题描述】:
我的对话系统遇到了问题。
我有一个脚本“对话管理器”,它接受一个“对话持有者”脚本,用于与用户进行输入/输出。当玩家靠近 npc 并按空格键时,每个 npc 都会有自己的对话持有者传递给对话管理器。
在 dialogManager 中,我像这样引用对话持有者脚本:
public dialogueHolder dh;
在 dialogHolder 脚本中,我有这段代码将 dialogHolder 初始化到 dialogManager 中:
dManager.dialogueHolder = this;
这在使用基本 dialogHolder 脚本时可以正常工作,但它只是单个 NPC 对话的模板。我怎样才能使多个对话持有者可以在 dialogManager 中以相同的方式引用?例如,我有一个脚本dialogueHolder_yellowMage,其中包含与法师npc有关的某些对话,我如何将其引用到DialogueManager中的dh变量中?因为 dialogHolder_yellowMage 与 dialogHolder 的标题不同,所以我不能这样引用它。
我试图改变
public dialogueHolder dh;
到
public Object dh;
但是我无法引用 dialogHolder 脚本中的任何变量。
抱歉,我是 stackOverflow 和 C# 的新手。请帮助新手!
【问题讨论】:
-
阅读继承。如果您从 dialogHolder 派生 dialogHolder_yelllowMage 它应该“适合”到变量(类型为 dialogHolder)。另一种选择是使用接口。 msdn.microsoft.com/en-us/library/ms173149.aspx
-
我不太了解您的架构,但无论如何。如果您让您的 dialogHolder_yellowMage 脚本继承 dialogHolder 那么您将能够在管理器中引用它。
-
太棒了!我非常感谢您的快速回复。谢谢!!!!!!
-
@GPlourde 似乎您没有正确使用 C# 对象 - 听起来您正在为每个 npc 定义一个独特的脚本?我已经开发了一些 Unity 对话系统,所以我确信这没有必要。
-
@Luke 如何在单个脚本上为每个 npc 单独对话?看来我必须给每个 npc 一个单独的对话持有者实例,因为它们都有彼此不同的字符串。有没有更好的办法?我想改进我糟糕的编码习惯哈哈。