Skip to content

自定义书本 ​

书本作为一种物品,主要供玩家浏览信息。通过自定义书本系统,开发者可以提供书本界面供玩家以翻书的方式获取知识、查看攻略或教程。自定义书本支持 JSON 数据驱动的基础书本,也支持通过脚本拓展书本的样式和交互功能。

Demo

参考官方示例 CustomBookMod 了解自定义书本的完整实现,包含基础书本、脚本书本、自定义页面与组件。

概述 ​

自定义书本系统采用三级层级结构:书本 → 目录 → 章节。章节包含实际的内容页面,目录包含多个章节,书本包含多个目录。

主要特性:

  • 通过 JSON 配置书本结构(书本、目录、章节)
  • 内置多种页面类型(文本页、图片页、实体展示页、合成表页等)
  • 支持通过脚本自定义页面类型和组件
  • 支持页面间跳转(含章节内、跨章节、跨目录跳转)
  • 支持章节锁定与解锁机制

待补充:书本系统与自定义物品的关联说明。

基础书本配置 ​

目录结构 ​

behavior_pack/
└── customBooks/
    └── myBook/           # 书本文件夹(名称即为书本 identifier)
        ├── book.json     # 书本基础信息
        ├── category/     # 目录 JSON 文件
        └── entry/        # 章节 JSON 文件

book.json ​

book.json 描述书本的基础信息,包括关联物品和首页排版:

json
{
  "item": "mymod:my_book_item",
  "title1": "书本主标题",
  "title2": "副标题",
  "content": "首页内容描述文本",
  "titleArea": {
    "offset": [-10, 0],
    "textSize1": 9,
    "textSize2": 8,
    "padding": 1
  }
}
字段说明
item关联的自定义物品 identifier
title1首页主标题
title2首页副标题
content首页内容文本
titleArea标题区域排版属性

前置条件

使用自定义书本前,需要先在 netease_items_res/ 中注册对应的自定义物品。

待补充:目录 JSON 与章节 JSON 的完整格式说明。

脚本书本 ​

书本界面本质上是一个 ScreenNode 控件,可以通过 ModSDK 接口获取并操作:

python
import mod.client.extraClientApi as clientApi
node = clientApi.GetUI("BookMod", "book_screen.main")

通过脚本可以实现:

  • 自定义页面类型(继承 BasePage)
  • 自定义组件(继承 BaseComp)
  • 动态修改页面内容
  • 响应用户交互事件

待补充:自定义页面注册流程与数据流向说明。

书本组件 API ​

所有书本组件继承自 BaseComp 基类,将数据和 UI 控件对象封装在一起。

核心方法 ​

方法说明
__init__初始化组件,注册组件名称和 UI 根节点
Show显示组件
Hide隐藏组件
Reset重置组件状态(可回收模式下必须重写)
SetData设置组件显示数据

组件回收

开启组件可回收(recycled=True)可提高 UI 渲染性能,但需要重写 Reset 方法处理属性重置。

待补充:内置组件(TextComp、ImageComp 等)的详细 API。

翻页 API ​

所有书本页面继承自 BasePage 基类,负责排版页内的组件。

核心方法 ​

方法说明
__init__初始化页面(可设置 size 和 position)
Show显示页面,依次调用页内组件的 Show 方法
AddComps将组件添加至页面

待补充:内置页面类型(TextPage、ImagePage、EntityPage 等)的详细说明。

通用脚本对象 ​

书本系统提供 Book、Category、Entry 三种页面组对象(均继承自 PageGroup),用于管理页面的层级关系和跳转。

页面跳转 ​

支持通过绝对路径和相对路径进行页面跳转:

  • 绝对路径:以 / 开头,如 /Book1/Category1/Entry1/2
  • 相对路径:不以 / 开头,基于当前页面组拼接,如 2

跳转范围

支持同章节内、跨章节、同目录内、跨目录的页面跳转,但不支持不同书本之间的跳转。

待补充:To、Back 等跳转方法的 API 说明。

完整示例 ​

待补充:一个包含基础书本配置和脚本自定义页面的完整示例。

下一步 ​

  • 了解 自定义物品 以注册书本对应的物品
  • 了解 UI 开发 以深入理解 ScreenNode 和 UI 控件体系
  • 查阅 ModSDK 文档中书本相关组件接口