使用模板 - SQwatermark/Patchouli-wiki-zh_cn GitHub Wiki
除了可以使用帕秋莉手册自带的默认页面类型,你还可以创建你自己的页面类型!可以使用帕秋莉手册的模板系统(template system)创建新的页面类型。
模板是以类似于章节和分类的方式被创建和引用的,因此,它们在 /patchouli_books/YOURBOOK/en_us/templates/yourtemplate.json 之类的文件中,它们可以在 /templates 的子文件夹中分门别类。
你的第一个模板
让我们从一个小教程开始学习如何创建一个模板。
- 进入 /patchouli_books/YOURBOOK/en_us/templates 文件夹,并创建 "test_template.json" 文件,按照如下方式填写:
{
"components": [
{
"type": "text",
"text": "Hello this is a test of the template system!",
"x": 20,
"y": 30
}
]
}
- 为手册创建一篇新文章,并以你喜欢的方式编写。在其一个页面中将页面类型设置为 "test_template"。
- 由于没有叫这个名字的默认页面类型,加载器会寻找叫手册中叫这个名字的模板。
- 自然,这表示模板的名字不能和默认页面类型的名字相同。
{
"type": "test_template"
}
- 在游戏中试试。你的页面应该显示你设置的文本。可以随意更改文本和 x 和 y 坐标。
- 回到 test_template.json 文件,将 "text" 更改为 "#text"。这是一个_变量_,我们可以在章节中设置它的值!
- 回到使用了模板的章节 JSON 文件,将页面改成这样:
{
"type": "test_template",
"text": "We just passed in the text from a variable!"
}
- 在游戏里看看编辑后的效果,你会发现模板将页面的 "text" 的值放进了 "#text" 中。这就是模板读取变量的方式。
关于变量的一些注意事项:
- 你可以定义任意多的变量,所以你可以在不同位置放置两个文本组件,它们显示一样的 "#text" 值(如果你想让它们显示一样的内容的话),或者比方说,"#upper_text" 和 "#lower_text"。
- 变量的名称不能和页面的通用键名称相同。这意味着你不能使用默认页面类型第一部分提及的键名。
- 你可以了解更高级的变量用法,例如将它们嵌入字符串中,或在模板变量页面中派生它们。
模板 JSON 格式
- components(对象数组,必需)
这个模板的组件的数组。格式如下:
[
{
"type": "TYPE",
(type specific data ...)
},
{
"type": "TYPE",
(type specific data...)
}
(...)
]
阅读模板组件了解帕秋莉手册提供的组件,以及每种组件需要的数据。
注意,组件是按照此处排列的顺序绘制的,如果你想让组件之间互相重叠,要按照合适的顺序排列它们。
- include(对象数组)
这个组件包含的组件列表,阅读模板嵌套了解有关信息。
- processor(字符串)
仅供模组作者使用:处理这个模板的处理器(processor)类的类名。处理器类可以将来自你的代码的数据派生为模板中定义的变量。阅读组件处理器了解有关信息。