维度定义 (<DimensionDef>)
功能说明
维度定义用于配置游戏中的一个独立“维度”或“地图”,它是一个可玩的游戏区域。每个维度都会指定一套地图生成器 (mapGenerators) 来构建其地形、放置初始建筑或植被等。此外,它还可以关联一个故事情节 (story) 作为该维度的开场或主线,并包含用于游戏启动界面展示的图标 (icon) 和玩家是否可以在游戏开始时选择该维度的标志 (canSelect)。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 必需。该维度定义的唯一标识符。 |
label | 字符串 | (空) | 可选。该维度在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该维度的详细描述。 |
mapGenerators | 地图生成器数组 | 无 | 必需。定义构建此维度的地图生成器链。详见下文**mapGenerators 字段**。 |
icon | 字符串 | (空) | 可选。用于在游戏开始界面选择地图时显示的图标路径。 |
canSelect | 布尔值 | true | 可选。指示玩家是否可以在游戏开始时直接选择该维度作为起始地图。 |
story | 定义 | 无 | 可选。关联到该维度的一个故事情节定义,常用于开场引导或主线剧情。详见下文**story 字段**。 |
示例
这是一个定义了一个可选择的、包含多个地图生成器和开场故事的维度示例:
<Define>
<!-- 引用或匿名定义的地图生成器 -->
<MapGeneratorDef defName="GrasslandsTerrain">
<workClass>BasicTerrainMapGenerator</workClass>
<value>{"tileDefName":"Grass", "mapCellSizeX":100, "mapCellSizeY":100, "threshold":-1, "Scale":1}</value>
</MapGeneratorDef>
<MapGeneratorDef defName="ForestScatter">
<workClass>PlantMapGenerator</workClass>
<value>{"tileDefName":"Tree", "mapCellSizeX":100, "mapCellSizeY":100, "requiredBaseTileDefName":"Grass", "density":0.3, "threshold":0.1, "Scale":10}</value>
</MapGeneratorDef>
<!-- 引用或匿名定义的故事 -->
<StoryDef defName="StartingSequence">
<storyStage>
<li>
<nextWaitTime>3</nextWaitTime>
<messageDef defName="WelcomeMessage"/> <!-- 引用已定义的消息 -->
</li>
<li>
<lastWaitTime>3</lastWaitTime>
<nextWaitTime>0</nextWaitTime>
<eventDef defName="SpawnPlayerBase"/> <!-- 引用已定义的事件 -->
</li>
</storyStage>
</StoryDef>
<!-- 维度定义 -->
<DimensionDef>
<defName>ForestDimension</defName>
<label>茂密森林</label>
<description>一个绿意盎然、植被茂密的维度,适合喜爱自然风光的玩家。</description>
<icon>UI/DimensionIcons/ForestMap</icon> <!-- 图标路径 -->
<canSelect>true</canSelect> <!-- 玩家可以从菜单中选择此地图 -->
<mapGenerators>
<li>GrasslandsTerrain</li> <!-- 引用已定义的地图生成器 -->
<li>ForestScatter</li>
<li>
<!-- 匿名定义的地图生成器,用于在特定位置生成起始点 -->
<workClass>BuildingMapGenerator</workClass>
<value>
{
"defName":"StartPoint",
"positionX":50,
"positionY":50,
"mapping":{"1":"StartPoint"},
"pattern":[[1]]
}
</value>
</li>
</mapGenerators>
<story>StartingSequence</story> <!-- 引用已定义的故事 -->
</DimensionDef>
<DimensionDef>
<defName>TutorialDimension</defName>
<label>新手教学</label>
<description>带领新玩家熟悉游戏基础操作的教学维度。</description>
<icon>UI/DimensionIcons/TutorialMap</icon>
<canSelect>false</canSelect> <!-- 此地图仅在特定条件下加载,玩家不能手动选择 -->
<mapGenerators>
<li>
<workClass>BasicTerrainMapGenerator</workClass>
<value>{"tileDefName":"TutorialGround", "mapCellSizeX":30, "mapCellSizeY":30, "threshold":-1, "Scale":1}</value>
</li>
<!-- ...更多教学地图生成器 -->
</mapGenerators>
<story>
<!-- 匿名定义一个简单的教学故事 -->
<storyStage>
<li>
<nextWaitTime>5</nextWaitTime>
<messageDef>
<type>ScreenCenterLargeText</type>
<text>欢迎来到教学!</text>
<color>Yellow</color>
</messageDef>
</li>
</storyStage>
</story>
</DimensionDef>
</Define>
复杂参数说明
mapGenerators 字段 (地图生成器数组)
- 说明:这是一个数组,包含了用于构建当前维度的所有 地图生成器定义。数组中的
<li>元素会按顺序执行。每个<li>都可以通过引用已定义的地图生成器defName或直接进行匿名定义来指定一个地图生成器。 - 数组定义方式:
<mapGenerators> <li>MapGeneratorDef的defName1</li> <li>MapGeneratorDef的defName2</li> <li> <!-- 匿名定义一个地图生成器 --> <workClass>AnotherMapGeneratorClass</workClass> <value> { "paramA": "valueA", "paramB": 123 } </value> </li> </mapGenerators>
story 字段 (故事定义)
- 说明:关联到该维度的 故事定义。这可以是一个预定义故事的
defName引用,也可以是在此处直接定义的匿名故事。通常用于在进入该维度时播放开场剧情或设置主线任务。 - 引用方式:
<story>StoryDef的defName</story> - 匿名定义方式:
<story> <storyStage> <li> <nextWaitTime>5</nextWaitTime> <messageDef> <type>ScreenCenterLargeText</type> <text>新世界,新冒险!</text> </messageDef> </li> </storyStage> </story>