C# 在Unity3D中实现Quest系统

C# 在Unity3D中实现Quest系统,c#,unity3d,C#,Unity3d,大家好 我正在Unity3D中制作一个故事驱动的游戏,我想让玩家完成一些任务来完成故事 实现quest系统的最佳和最有效的方法是什么 目前我考虑的数据结构如下: 任务(类) 任务名称 任务描述 任务奖励 任务地点 这是一个侧面任务吗 主要任务的名称是什么 有必要继续主要任务吗 质询经理(班级) 所有任务列表 该剧目前追求的是什么 当前任务的目标和副任务列表 在当前的任务中,该剧的目标是什么 检查玩家是否完成了任务/目标/侧面任务,并相应地处理事件 数据结构看起来相当合理,但我不知道如

大家好

我正在Unity3D中制作一个故事驱动的游戏,我想让玩家完成一些任务来完成故事

实现quest系统的最佳和最有效的方法是什么

目前我考虑的数据结构如下:

  • 任务(类)
    • 任务名称
    • 任务描述
    • 任务奖励
    • 任务地点
    • 这是一个侧面任务吗
    • 主要任务的名称是什么
    • 有必要继续主要任务吗
  • 质询经理(班级)
    • 所有任务列表
    • 该剧目前追求的是什么
    • 当前任务的目标和副任务列表
    • 在当前的任务中,该剧的目标是什么
    • 检查玩家是否完成了任务/目标/侧面任务,并相应地处理事件

数据结构看起来相当合理,但我不知道如何以一种通用的方式实现,这样我就可以轻松快速地在游戏中创建任务。有什么想法吗?

你的总体想法似乎不错。我会稍微修改一下。我可能会让任务奖励也成为一门课。这样就更容易定制奖励。。我还将使“主任务的名称是什么?”成为一种获取任务对象(如果存在)的方法。这样你可以很容易地从子任务中引用父任务

我假设您使用数据库来存储所有这些信息?如果不是,我建议使用sqlite

这样,添加更多任务等所需的全部工作就是向用户发送更新的数据库文件。只需将数据添加到数据库中也很容易/快速。没有硬编码任务等

因此,您将这些任务类创建为模型,填写数据,然后将该对象转换为JSON。然后可以将其存储在数据库中。一旦它被取出,您就可以将Json转换回一个Quest对象

用于执行此操作,以及


或者你也可以这样做:

你的总体想法似乎很好。我会稍微修改一下。我可能会让任务奖励也成为一门课。这样就更容易定制奖励。。我还将使“主任务的名称是什么?”成为一种获取任务对象(如果存在)的方法。这样你可以很容易地从子任务中引用父任务

我假设您使用数据库来存储所有这些信息?如果不是,我建议使用sqlite

这样,添加更多任务等所需的全部工作就是向用户发送更新的数据库文件。只需将数据添加到数据库中也很容易/快速。没有硬编码任务等

因此,您将这些任务类创建为模型,填写数据,然后将该对象转换为JSON。然后可以将其存储在数据库中。一旦它被取出,您就可以将Json转换回一个Quest对象

用于执行此操作,以及


或者你也可以这样做:

我看不出有什么问题。你所列出的是非常通用和合理的。实现它有什么让人困惑的地方?对于每个要点,请使用内置类型或编写自己的类型class@GordonAllocman当你完成了任务系统的各个部分,并且必须将它们全部连接起来以创建它的最终功能之后,混乱就开始了。如果有人拿了这些要点并向我展示了一个如何将它们连接在一起以实现该功能的示例,那么就不会那么让人困惑了。我会想象玩家有一个任务管理器实例,而你已经说过任务管理器有一个所有任务的列表,所以它是如何组合在一起的。这只是一种可能的方法,你可能会意识到你需要改变它,但这绝对是一个合理的开始。我建议您尝试自己创建类,如果您遇到困惑,请发布您尝试过的代码以及您从哪里得到的Stuck,并将QuestManager作为一个单例实例。然后简单地从那里构建你所有的任务对象,让任务管理者根据任务的标准来管理它们、标记它们完成等等。@GordonAllocman我将从它的编码开始,看看我能独处多远,如果我在途中遇到问题,将更新帖子。谢谢,我看不出有什么问题。你所列出的是非常通用和合理的。实现它有什么让人困惑的地方?对于每个要点,请使用内置类型或编写自己的类型class@GordonAllocman当你完成了任务系统的各个部分,并且必须将它们全部连接起来以创建它的最终功能之后,混乱就开始了。如果有人拿了这些要点并向我展示了一个如何将它们连接在一起以实现该功能的示例,那么就不会那么让人困惑了。我会想象玩家有一个任务管理器实例,而你已经说过任务管理器有一个所有任务的列表,所以它是如何组合在一起的。这只是一种可能的方法,你可能会意识到你需要改变它,但这绝对是一个合理的开始。我建议您尝试自己创建类,如果您遇到困惑,请发布您尝试过的代码以及您从哪里得到的Stuck,并将QuestManager作为一个单例实例。然后简单地从那里构建你所有的任务对象,让任务管理者根据任务的标准来管理它们、标记它们完成等等。@GordonAllocman我将从它的编码开始,看看我能独处多远,如果我在途中遇到问题,将更新帖子。谢谢你的回答。我没有使用数据库,我不能在我的游戏中使用它来执行任务,因为所有的任务位置都是唯一的。我会记住每个人说过的话,开始编写任务系统。将发布updates@Tayab只是因为位置是唯一的