大家好啊,我是之前发 编辑大量对话的插件 和 拆分代码的工具 的新人。
这次我又来发脚本了。
我不知道大家是怎么管理游戏的流程的啊。。。
我最开始是设置了几个变量和开关来管理流程。。但序章都没写完就管理不过来了。。。经常一个事件要判断N个变量+N个开关。。。又不能用复合条件,全靠if来套。。。整个事件流搞得难看得要死。。。
所以就搞了这个插件。。。
先简单说说使用方法吧:
导入插件:
注意,本插件和我之前发的消息插件一样,也依赖 "LYZ_Core" 这个插件,。或者说我的个人插件都会依赖这个。
几个参数:
"Flow Tree Definition"是文件名,文件放在"data/FLOW"文件夹下:

Tab Indent,几个tab算作一次缩进。
Space Indent,几个空格算作一次缩进
缩进是用来判定这是哪一级流程的,非常重要。
Max Depth是表示流程树有多深,默认为8层,虽然我至今最多只用到了3层。
然后光说参数含义还是肯定懂不了,所以再来说说流程定义文件。长这样。
TEXT 代码
很典型的树状结构。缩排就是用来表示流程级别的。比如第一卷第二卷是一级流程,第一章第二章之类是二级流程,事件1事件2之类是三级流程,
郑重提醒,缩排用的格式最好全文件统一,
用tab就全用tab,用空格就全用空格,混用特别容易出错。
深度就是最多有几级流程,比如现在这个流程树深度为3。
所有流程都不允许以'$'开头,有可能会跟保留字段冲突。
占位流程($):每一级流程之前都有一个名为'$'的流程,在没有设置子流程之前用于占位之用。
流程的值(.$value):每个流程会被自动分配一个值,从上到下依次增加,占位流程的值与父流程相同。
举个栗子,还是拿上面的流程树来说:
这代码里面Flow是根流程,所有一级流程都是它的子流程
JAVASCRIPT 代码
以此类推
常用语句:
JAVASCRIPT 代码
还有很多高级用法说不完,下面就是定义流程对象类型的代码片段,愿意的自己可以啃代码;

Chapter类
这些语句都知道了,在哪用呢:
主要是两个地方:判断流程和设置流程

判定(Flow的F大写):

设置(插件指令和脚本均可,区别只是脚本只能F大写,插件指令F大小写均可):

因为是脚本,所以均支持复合条件判定
比如 Flow.第一卷.$contains() || Flow.第二卷第四章.$is()
或者 Flow.第一卷.第一章.$lt() && Flow.第二卷第四章.$gt()
另外关于如何判断游戏开始。
游戏第一次进入时所在的流程是$.$.$.$......值为0
所以可以像我图中那样用Flow().$v==0来判定,也可以用Flow.$is()来判定,第二种更简洁,第一种语义更明确,用哪种看喜好。
流程发生切换的时候会自动在控制台打log方便调试。
当前所在流程会被存档,读档时是根据名字进行索引的,所以如果只是改了流程顺序或者增加了流程存档仍然可用,但如果流程改了名字或者删除了流程,进度刚好在被改名或者删除的流程位置的存档会失效。
其他:
Flow对象是插件定义在全局对象上的属性,如果发生命名冲突可以通过LYZ.Flow或者LYZ.FlowManager.Flows['Main']来访问这个对象。
插件默认只创建了一个全局流程管理对象(即Flow对象),用于管理整个游戏的流程
但是可以用LYZ.FlowManager.MakeFlow(filename,key)来创建新的流程管理对象,每个对象各自独立。可以通过返回值或者LYZ.FlowManager.Flows[key]来获取这个对象。
比如如果会写脚本的话可以将这东西附着在任务对象上,让任务系统也拥有流程管理能力。
下载在这:
[attachments]0[/attachments]
本帖来自P1论坛作者大钊,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=391001 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。