
提示
我的自用Ink剧情系统Dia已经开源,你可以去我新的文章看看,当然你要是想自己手搓也可以 但是本系列应该不会更新了
Ink是什么?
Ink是Inkle公司推出的一种脚本式的文字预处理语言,它可以简单轻松地编写一些优秀的游戏剧情,通过简单的符号标记来组织内容文本以及对话的流程。
Ink语言可以用标记符号来编写剧情的对话,选项,也可以添加变量和逻辑来控制剧情的变化(比如Undertale的三种路线中不同的剧情)
从Ink官网,你可以更详细地了解Ink。
工欲善其事,必先利其器-下载Inky
Inky是Inkle推出的编写Ink语言的编辑器,在Ink官网即可下载
在Ink官网下滑就能找到Inky的下载地址,以你自己的开发平台为准下载Mac,Windows或Linux版本的Inky
熟悉Inky界面
打开Inky,界面会分成两个页面,左边是编写Ink语言的地方,右边则是预览页面。你编写的脚本的运行结果会实时同步在上面。
你可以在界面上方的Help选项里查看Inky内置的Ink语言文档,不过是全英文的。
尝试编写Ink脚本
Inky会在刚打开软件时显示一段初始代码,你可以看一看这段代码预览的结果,其中Once upon a time...
以文本形式打印,There were two choices.``There were four lines of content.
则变成了两个选项。下面我们开始学习Ink的语法
Ink语法
内容(普通文字)
在Ink上写普通的文本就和HTML一样,直接写下文本,最终会原封不动地打印出来。上文的Once upon a time...
就是这样。
选项
使用*
标记这是一个选项,语法是*
+选项
+选了选项后出现的内容
例如:
* 这是一个选项这是你选了这个选项后面出现的内容。
选项后面的内容都是选择这个选项后出现的内容,直到遇到了跳转符号或者另一个选项或者结尾。
你可以理解为这是一个switch-case,如果不遇到break或return的话就永远不会结束。
节点
节点是Ink的重要组成部分,它的语法是 ===
+节点名称
+===
,节点后面的内容是节点的内容,例如这样:
=== 一个节点===这是节点里的内容
在上面的示例中,没有在节点中写的内容叫做无节点内容。
我们可以用->
来跳转到某一节点,而->END
则代表结束当前的剧情。
预览结果:
注意事项
因为选项中除非遇到跳转符号,否则选项后面的所有内容都是选择选项后执行的内容,这样就会导致最后的->END
也会变成一个选项独有。
想要解决这个办法,我们可以用-
将阻断选项,例如- ->END
,这样不管你选择了哪个选项,最后都会执行->END
这就像编程中的try-catch-finally
中的finally
,不管其中发生了什么,被-
标记的内容都会显示出来
我们将上面的语法组合到一起,就可以写出基础的剧情了。