故事定义 (<StoryDef>)
功能说明
故事定义用于组织和编排游戏中的故事情节流程。一个完整的故事由一系列按顺序执行的故事阶段 (<StoryStageDef>) 组成,每个阶段可以包含等待时间、触发特定事件或显示消息等。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 必需。该故事定义的唯一标识符。 |
label | 字符串 | (空) | 可选。该故事在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该故事的详细描述。 |
storyStage | 故事阶段数组 | 无 | 必需。定义组成该故事的各个阶段。这是一个故事阶段的数组。详见下文**storyStage 字段**。 |
示例
这是一个定义了一个包含两个阶段的故事的例子:
<Define>
<!-- 独立的事件和消息定义,供故事阶段引用 -->
<EventDef>
<defName>StartQuest_FirstEncounter</defName>
<workClass>Event_StartQuest</workClass>
<parameter>{"QuestId": "FirstEncounter"}</parameter>
</EventDef>
<MessageDef>
<defName>WelcomeMessage</defName>
<type>ScreenCenterLargeText</type>
<text>欢迎来到这个世界!</text>
<color>White</color>
</MessageDef>
<!-- 故事定义 -->
<StoryDef>
<defName>NewGameIntro</defName>
<label>新手引导故事</label>
<description>玩家初次进入游戏时的引导流程。</description>
<storyStage>
<li>
<lastWaitTime>0</lastWaitTime>
<nextWaitTime>3</nextWaitTime> <!-- 等待3秒 -->
<messageDef>WelcomeMessage</messageDef> <!-- 引用消息定义 -->
</li>
<li>
<lastWaitTime>3</lastWaitTime> <!-- 继承上一个阶段的nextWaitTime作为lastWaitTime,也可自定义 -->
<nextWaitTime>0</nextWaitTime>
<eventDef>StartQuest_FirstEncounter</eventDef> <!-- 引用事件定义 -->
</li>
</storyStage>
</StoryDef>
</Define>
故事阶段定义 (<StoryStageDef>)
功能说明
故事阶段定义是构成完整故事的基本单元。每个阶段代表故事流程中的一个步骤,可以指定该阶段的持续时间(通过等待时间)、需要触发的特定事件、以及需要显示给玩家的消息。故事阶段通常作为 <StoryDef> 内部的匿名定义存在。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 可选。该故事阶段的唯一标识符。作为匿名定义时可省略。 |
label | 字符串 | (空) | 可选。该故事阶段的内部标识标签。 |
description | 字符串 | (空) | 可选。该故事阶段的详细描述。 |
lastWaitTime | 浮点数 | 0 | 当前阶段开始前必须等待的前一个阶段的结束时间点(秒)。 |
nextWaitTime | 浮点数 | 0 | 当前阶段结束前需要等待的时间(秒)。这个值通常作为下一个阶段的 lastWaitTime。 |
eventDef | 定义 | 无 | 可选。定义此阶段结束后要触发的事件。可以是预定义事件的引用或匿名定义。详见下文**eventDef 字段**。 |
messageDef | 定义 | 无 | 可选。定义此阶段中要显示给玩家的消息。可以是预定义消息的引用或匿名定义。详见下文**messageDef 字段**。 |
复杂参数说明
storyStage 字段 (故事阶段数组)
- 说明:这是一个数组,其内部每个
<li>元素代表一个故事阶段的定义。通常,这些阶段定义会以匿名方式直接嵌套在<li>中。 - 数组定义方式:
<storyStage> <li> <!-- 第一个故事阶段的定义 --> <lastWaitTime>0</lastWaitTime> <nextWaitTime>5</nextWaitTime> <messageDef> <type>ScreenCenterLargeText</type> <text>开始新篇章!</text> </messageDef> </li> <li> <!-- 第二个故事阶段的定义 --> <lastWaitTime>5</lastWaitTime> <nextWaitTime>0</nextWaitTime> <eventDef> <workClass>Event_SpawnMonster</workClass> <parameter>{"MonsterType": "Goblin", "Count": 3}</parameter> </eventDef> </li> <!-- ...更多故事阶段 --> </storyStage>
eventDef 字段 (事件定义)
- 说明:指定当前故事阶段完成后触发的事件。它可以是已经预定义好的 事件定义 的
defName引用,也可以是在此处直接定义的匿名事件。 - 引用方式:
<eventDef>EventDef的defName</eventDef> - 匿名定义方式:
<eventDef> <workClass>Event_SpawnItem</workClass> <parameter>{"ItemDefName": "HealingPotion", "Count": 1}</parameter> </eventDef>
messageDef 字段 (消息定义)
- 说明:指定当前故事阶段需要显示给玩家的消息。它可以是已经预定义好的 消息定义 的
defName引用,也可以是在此处直接定义的匿名消息。 - 引用方式:
<messageDef>MessageDef的defName</messageDef> - 匿名定义方式:
<messageDef> <type>PassiveHint</type> <text>你获得了新的任务目标!</text> <color>Yellow</color> </messageDef>