Ren’Py包含一个对话历史系统,存放着每一行向用户显示过的对话文本。存储的对话可以恢复或者再次向用户显示。
对话历史系统由两个变量控制。变量
config.history_length 控制存储的对话历史最大层(entry)数,必须设置才能启用对话历史功能。变量 _history 可以用于禁用或重新启用对话历史的存储功能。
最后,变量 _history_list 将实际的历史记录存储为一个HistoryEntry对象的列表。HistoryEntry对象的字段(field)内包含下面的数据。
HistoryEntry linkkind link创建这段对话历史的角色类型,Ren’Py中只能是“adv”或“nvl”。
who link一个字符串,表示发言角色名,如果不存在的话就是None。
what link一个字符串,表示对话文本。
who_args link一个字典,表示原来显示时who文本组件应用的特性(property)。
what_args link一个字典,表示原来显示时what文本组件应用的特性(property)。
window_args link一个字典,表示原来显示时对话窗口应用的特性(property)。
show_args link一个字典,表示原来显示时say界面应用的特性(property)。
image_tag link用于 Character() 的图像标签(tag),若没有则是None。
voice link函数 _get_voice_info() 返回的对象,存储播放的语音信息。
rollback_identifier link这是一个标识符,可以传入 RollbackToIdentifier() ,可以导致生成的这个历史层回滚到对应的那行脚本。如果位置依然在脚本日中时回滚才会发生,否则这个行为(action)是无效的。
一旦创建了一个HistoryEntry对象,就会传给 config.history_callbacks 中配置的每一个回调函数,那些回调函数允许创作者写的代码添加新的字段(field)。