求教!cocos creator可选对话框功能怎么实现!

   请问各位大佬,我想实现的功能是游戏中在和NPC对话时候,在对话框基础上,

有时候是可以让玩家自己选择对话内容的。就像这样

然后依据玩家选择的对话进而影响后面的对话。玩家选择的对话内容只是影响接下来的对话内容和当前金币掉落之类的一些内容,对后续剧情影响大的不多,所以应该不用太复杂的东西。
动态生成对话框什么的我倒是会,但是中间加进去一个选项框在依据选项动态生成对话框,就有点迷糊了,尤其是动态生成这些时,相关信息怎么存储的。
我大致考虑的是一个Map key为当前时间,value为数组,记录此时间下的对话信息的key,然后依据对话信息的key拿到的是一个数组,数组记录两个key,一个是对话内容的key,一个是选择框的key,依据这个拿到对应的一组对话,和选项框信息,先动态生成该组对话第一段,然后结束后判断是否有选项框,然后有就生成个选项框,没有就结束。选项框个选项传参,依据参数记录下面要生成的对话内容。
emmm,反正很迷糊,感觉自己怎么做好像很乱的样子。有没有大佬实现过类似的功能,麻烦给讲一下思路,或者有demo给分享学习一下就更好了。

可以看看行为树

分享一个dialog对话树 - 非技术 - Cocos中文社区

这是3.x的

//...........................已省略几千行
         } else if (guideManage.behavior[0] == "suipianhecheng") {//合成碎片
            ItemGridTip.instance.sell();
        } else if (guideManage.behavior[0] == "shopBuy") {//购买道具
            ShopBuyEquitPanel.instance.onSubmit();
        } else if (guideManage.behavior[0] == "showTalk") {//多段对话的
            if (this.contentIndex < this.contentArr.length - 1) {
                this.contentIndex++;
                return;
            }
        } else if (guideManage.behavior[0] == "clickany") {//点任意处的
            var conditions2: Array<any> = guideManage.conditions[0][1];
            PanelManager.getPanel(conditions2[0]).close();
            this.close();
            return;
        }