当前位置:首页 > 高性能开发 > 游戏开发

RPG游戏的对话系统实现思路有关问题

优良自学吧提供RPG游戏的对话系统实现思路有关问题,RPG游戏的对话系统实现思路问题我现在想实现一个对话系统,有一个比较简单的方案是当对话开始时,加载所有对话内容,然后读取第一条对话并显示,以后每当用户点击对话框(或者其他操作)时,读取显示下一条对话,直到对话结束。 然而这样做非常不灵活,尤其是在对话有分支以及对话过程中有其他操作(比如获取物品、人

RPG游戏的对话系统实现思路问题
我现在想实现一个对话系统,有一个比较简单的方案是当对话开始时,加载所有对话内容,然后读取第一条对话并显示,以后每当用户点击对话框(或者其他操作)时,读取显示下一条对话,直到对话结束。
然而这样做非常不灵活,尤其是在对话有分支以及对话过程中有其他操作(比如获取物品、人物属性变化)的时候。我现在希望实现一个可以完全由脚本控制的对话系统,比如脚本有以下内容
talk(1......)
talk(2......)
talk(3......)
当执行talk(1......)的时候,直接显示对话内容,然后等待用户操作,然后再执行talk(2......)
上面红字的内容,就是我不会实现的部分。我找了很多关于对话系统的教程,都没有提及这个的实现思路,要么就只是上面那种简单的流式实现。
求大神讲解一下一个灵活的对话系统的实现思路,以及我上面的构想有没有不对的地方,谢谢!
------解决思路----------------------
引用:
Quote: 引用:

是触发式的.. 你可以去试试... 在点击有对话框的时候, 其实是有个全屏的透明面板, 不管点击哪里, 都会点击到那个透明的面板上..
点击到面板上的时候, 才去触发了下一步骤的对话..  可以写成全局的, 记录当前是调用谁的对话内容, 调用到哪一步骤了... 如果调用到最后了, 那么就销毁对话面板和那个透明的面板.... 
我的想法是这样的.... 不知道能不能帮到你...

我怎么感觉你说的和我说的第一种方案一样……我是想控制脚本的执行而不是数据,因为数据是不动的,想什么时候用就什么时候用,但是脚本一旦运行起来就会一句一句执行吧,我现在想的就是有没有办法可以让脚本在等到有动作触发了再执行下一句这样,我感觉我发的那个blog就是这样的吧,不知道我理解错没……


感觉好像他是用的 while 循环的呢.. 一直在检查玩家动作.. 然后根据动作去调用..看到有方法里面有case .. 所以就是指令是什么就case到那里去处理... 就是不停的在监听玩家的动作.. 去调用方法.. 然后再去刷新..这样的感觉...
. 因为没写过js..代码看的不是特别懂..... 但是我觉得用主动触发式的好一些.. 就是你说的第一种方法... 性能上好很多.不用一直刷...
------解决思路----------------------
我觉得你还是得按照程序的顺序执行流程去看待代码,而不是阻塞那种,
你这个对话系统,实际上是UI设计范畴。
你应该自己建立对话顺序,
每次进行下一对话的时候,你的脚本应当是可以收到通知的,在通知的地方,判断下一个应当播放那个对话即可。
如同一个按钮点完,应当打开什么窗口,这个窗口里的按钮点完,又需要做什么事一样。

当然了,你要想一次性调用所有的talk(),也是可以,那这个talk()函数可能仅仅就是保存要对话的内容,当进行下一对话的时候,再从列表中找到下一内容进行显示
------解决思路----------------------
你一开始的思路,是加载所有的对话内容,但你说觉得不够灵活。
可能你把脚本认定为了只能是对话内容,其实你加载脚本的时候,可以保存为有结构的对象。
这样你依旧可以自由控制什么时候显示下一条内容(避免了脚本一次执行完毕的问题),也不会出现不灵活的情况,因为脚本依旧转换为了可控的对象,对象间也可以相互有联系,
比如执行完对象A,它下一条可能是对象F,而不是对象B。这就要看你怎么去设计这个结构了,形如:

talkA{
   chat:"有空吗?请我吃饭吧。",
   choose{
      c1:"好" link:talkB
      c2:"才不要!..去哪吃?" link:talkC
   }
}
talkB{
   chat:"好。"
}
talkC{
   chat:"才不要!去哪吃?"
}

(这里只是随意写的,举个例子而已~)
(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢