IQA 引擎是什么?
一种视觉演绘小说解决方案,赋能于开发者,支持「文字剧本、2D图层、音频」等功能。
上方片段节选自「寻迹」,较为复杂的效果需要开发者通过编写 APC 指令 实现效果。
IQA 引擎在运行中解析来自上层开发者编写的脚本,底层使用 JavaScript 实现具体功能,向用户呈现演出。
如您已经熟练掌握 IQA v2.x 开发,推荐优先阅读 语句结构 学习 v3 版本最为重要的设计变化;
如您是 v3.0 内测开发者,推荐优先阅读 版本更新 了解指令相关变化。
快速起步(新手必看)
打开对话框,编写演出剧本
这里节选了一段「寻迹」的开场脚本,其中的 msgdia 指令可以打开对话框,
"@" 是一种运行符,所有的指令必须搭配运行符才能生效。
如不作额外处理,IQA 会模仿打字机效果逐渐将剧本输入到对话框上:
@msgdia
不知不觉中,窗外下起了小雨,细密的水珠勾起一道道水痕,在老旧的玻璃窗上延伸。
我盯着窗外愈来愈模糊的景色,不由得发出叹息。
“唉。”
有些年岁的椅子发出磨牙般尖锐刺耳的噪音,我挺了挺身,不敢太过放松了。
来到新的岗位已经一周,却依然难以适应新的环境。
控制对话框的显示,并通过 p 指令来渐进触发演出
通常情况下,演出可能会希望台词按照用户的点击来渐进触发。
这时可以使用 p 指令实现等待,并且可以通过 msgoff 来暂时关闭对话框。
以";"符号开头是注释行,不参与演出,通常用作对某段脚本的备注;
每一个 P 指令会等待用户的一次点击后,演出才会继续,[p] 是一种 @p 的行内简写方式(语法糖):
@msgdia
不知不觉中,窗外下起了小雨,细密的水珠勾起一道道水痕,在老旧的玻璃窗上延伸。[p]
我盯着窗外愈来愈模糊的景色,不由得发出叹息。[p]
“唉。”[p]
@msgoff
; 此处省略过渡动画相关脚本,以";"符号开头是注释行,不参与演出
@msgdia
有些年岁的椅子发出磨牙般尖锐刺耳的噪音,我挺了挺身,不敢太过放松了。[p]
来到新的岗位已经一周,却依然难以适应新的环境。
创建图层
不同于 v2.x,在 IQA v3 中图层需要开发者手动创建
; 创建一个名为 CHR1 的图层,并对其设置纹理(图片)并且设置为完全透明
@avg.create CHR1
@avg.set CHR1 url=轻文娘_立绘 alpha=0
; 让 CHR1 运行动画:通过 1000 ms 的时间不透明度从 0 运动至 1,图层将具有渐入效果显示
@avg.animation CHR1 alpha=1 time=1000
清理一个图层,将其恢复至初始状态:
@avg.clear CHR1
如果您希望完全控制图层的删除,可以使用 avg.break
它会完全删除一个图层,并且摧毁其中的纹理数据,释放该图层的所有内存引用:
; 如使用该指令摧毁后,"轻文娘_立绘" 资源将不能再次在章节内使用,CHR1 图层也将消失
@avg.break CHR1
播放音频
在 IQA v3 中音频名依然是内置的,比如我们调用 BGM1 的音轨
; 在 BGM1 音轨上播放名为 "轻文主题曲" 的音频,渐入时间为 1000 ms
@play BGM1 url=轻文主题曲 time=1000
在某处停止 BGM1 播放的音频,同样设置渐出时间为 1000 ms:
@stop BGM1 time=1000
准备好了吗?
我们刚才简单介绍了 IQA 核心最基本的功能——本教程的其余部分将更加详细地涵盖这些功能以及其它高级功能,所以请务必读完整个教程!