Skip to content

解释原理说明

返回目录

深度开发中通过make工具链将脚本文件解释到./ezgal/csharp/FlowData.cs文件,低代码开发则依赖./ezgal/csharp/Global.cs文件对./ezgal/script文件夹内的脚本演出脚本即时读取。剧本演出脚本解析为json格式后在./ezgal/scene/game.tscn进行统一调用。

解析到json

解析过程./ezgal/csharp/Global.cs与make工具链的实现为同源的,核心解析工具均为read_file()函数,核心实现功能如下:

文件逐行处理

通过读取文件,对文件进行逐行读取,各行string line限制不为null,删除字符串的头尾空白符

大括号处理

当存在左括号{存在时当前行string line将持续添加下一行信息直到右括号闭合},大括号内信息使用set_braces_func1()函数统一处理

选项处理

当读取[选项]时存储flow_line.type="选项",跳转为其他类型前将每行line作为一个选项存储于set_option

json处理逻辑

文字处理

文字处理工作需要提前设置type="对话框"type="全屏",对话将根据type类型将文字显示在对应窗口中。后续type为空时将自动沿用上一次存储的type类型。

  • 图片功能集合:可以在文字处理中同时加入图片功能,图片将在文字处理的当前行更新。
  • 声音功能集合:可以在文字处理中同时加入声音功能,声音将在文字处理的当前行更新。
  • 跳转功能集合:可以在文字处理中同时加入跳转功能,跳转会在文字处理完的下一行跳转到新的场景。

独立演出处理

当演出需要作为单独进行时需要单独设置type="演出",运行到当前行的时候不包含文字处理流程.

空段落处理

目前这是个不完美的解决方案,未来这是Ezlang重点需要解决的问题。

针对不规范的代码编写方式有可能存在空段落的情况,空段落在处理过程中直接跳过到下一个段落。