unity想做个有有分支的对话系统

unity坐游戏,想在与npc对话时能出分支选项,能根据分支不同出不同的对话和效果(如加好感)。初步打算用txt、Excel写对话文本,但是如何做出分支选项呢?如何才能判断接下来这段对话有几个选项,并根据选项转跳到不同的对话行。

那你的原始文本就应该有id和pid(parent id)
所有的pid都指向另一个id
最初的对话pid是0
那么每个对话,用自己的id去查哪些对话的pid与自己的id相同,有几个就是几个选项
至于NPC的对话,NPC又不会选,他应该只会根据你的对话做出响应的回答,所以你的对话和对应NPC的对话应该在同一行上
如果好感度不同,同样的话有不同反应,那无非也就2种不同的反应,你把两种都写上就好了

假设填excel表,可以设计 字段“对话ID”,字段“对话内容”,字段“选项清单”

选项清单假设设计为这样:这是进入下个对话的选项A{dialogID:2}|这是进入下个对话的选项B{dialogID:3} |这是完成这个对话任务的选线C{questID:1},然后程序就会根据选项去执行{}里面的内容

比较简单的实现是:
统一在字典树(TrieTree)或者规则引擎里


复杂一点需要引入规则引擎。

另一种设计打散设计,无论是对话还是加好感都是Action,然后通过不同路由或者Topic进行响应。比如目前dapr的Actor模式(虽然一提dapr文章都告诉你这是分布式系统,我们也承认他是分布式系统,但也从来就没人说过分布式系统就不”分布“在同一台机器,同一个应用程序进程对吧,我们只是借用他天然分布打散的方式去自由扩展实现而已,本身Actor设计方向就是无关他分布在哪里都可响应,都可通知和应答)