### 数据定义使用文档 #### 1. 文件夹结构 程序在启动时会读取程序所在文件夹中的以下两个文件夹: - **Data**:包含游戏的核心数据定义。 - **Mods**:包含用户或开发者创建的扩展模块。 每个文件夹下的子文件夹被视为一个独立的模块,但模块之间可以互相引用。推荐的文件夹结构如下: ``` root/ ├── Data/ │ ├── Pack1/ │ │ ├── About/ │ │ ├── Define/ │ │ └── Translation/ │ └── Pack2/ │ ├── About/ │ ├── Define/ │ └── Translation/ └── Mods/ ├── Mod1/ │ ├── About/ │ ├── Define/ │ └── Translation/ └── Mod2/ ├── About/ ├── Define/ └── Translation/ ``` #### 2. XML 文件类型及用途 XML 文件根据根属性名分为三种类型: - **Define**:用于定义游戏中的数据类型和具体实例。 - **About**:用于描述模块的基本信息(如名称、版本、依赖关系等)。 - **Translation**:用于提供多语言支持的翻译内容。 --- ### 3. Define 定义 #### 3.1 根节点 根节点的属性名为 `Define`,表示这是一个数据定义文件。例如: ```xml ``` #### 3.2 数据块结构 每个数据块通常包含以下部分: - **defName**:该数据块的唯一标识符(在同一类型中必须唯一)。 - **字段定义**:通过字段名和值为对应的类变量赋值。 - **引用**:通过 `defName` 引用其他数据块。 #### 3.3 示例解析 以下是一个典型的 `Define` 文件示例: ```xml CatGirl 100 1.2 5 CatGirl She is a cat girl with agile movements and sharp senses. CatGirl CatGirl_down CatGirl_left CatGirl_right CatGirl_up CatGirl_down ``` #### 3.4 加载流程 1. **索引建立**:程序加载时会依次读取所有 `Define` 文件,并记录每个数据块的 `defName` 和类型。 2. **引用连接**:在所有数据块加载完成后,程序会根据 `defName` 连接引用关系。 --- ### 4. About 定义 #### 4.1 根节点 根节点的属性名为 `About`,表示这是一个模块的介绍文件。例如: ```xml ``` #### 4.2 字段说明 | 字段名 | 描述 | |--------------|----------------------------------------------------------------------| | `name` | 模块名称。 | | `description` | 模块的详细描述。 | | `version` | 模块版本号。 | | `packID` | 模块的唯一标识符,用于区分不同模块。 | | `sort` | 模块加载顺序配置,包含 `before` 和 `after` 两个子字段,分别指定优先加载的模块和后加载的模块。 | #### 4.3 示例解析 以下是一个典型的 `About` 文件示例: ```xml 核心 这是游戏的核心模块,除非有完整的代替,否则应该永远作为启动项 0.1 core ``` --- ### 5. Translation 定义 #### 5.1 根节点 根节点的属性名为 `Translation`,表示这是一个翻译文件。例如: ```xml ``` #### 5.2 字段说明 翻译文件中的每个字段以点号分隔的形式表示路径,格式为: ``` <类型名>..<字段名> ``` 例如: ``` CharacterDef.CatGirl.label ``` #### 5.3 示例解析 以下是一个典型的 `Translation` 文件示例: ```xml 猫娘 她是一个猫娘,拥有猫的特性和人类的智慧。她的耳朵和尾巴显示了她的猫族血统。 ```