【GE】在单张地图中使用多个纹理集

前言

许多作者在进行地图创作时,在进行地形方面的绘制过程中,会根据不同的需求使用不同的纹理绘制地面。

在编辑器中,至多的最大纹理数量上限被限制为了 16 个,而地图纹理集似乎并未设置上限。

但在某些情况下,作者可能将会使用到超过 16 个纹理进行在同一个地图中进行的紧凑的地形内容创作。

实现方法

Step1. 以组件文件夹类型保存

首先,我们需要将地图文件保存为“组件文件夹”形式,以便于我们对地图文件包中的单个文件进行修改。

使用 文件(F) -> 另存为(A)… 进行,选择保存类型“《星际争霸II》组件文件夹(.SC2Components)”保存。

《星际争霸II》组件文件夹(.SC2Components)保存

Step2. 修改 t3Terrain.xml 文件

然后,我们通过直接修改地图地形设置文件 “t3Terrain.xml” 来实现添加额外的纹理集和纹理。

使用任何代码/文件编辑器在刚才保存的组件文件夹目录中,打开文件:/t3Terrain.xml

找到代码行: <textureSetList num="18">

然后在下方代码: <textureSet i="1" name=""/> 中的 name 键值中添加要添加的额外纹理集 ID。

t3Terrain.xml 文件 textureSetList 段代码

Step3. 确认所需添加额外纹理集的 ID

在通过 t3Terrain.xml 文件添加额外纹理集的过程,将需要到对应纹理集的 ID。

打开“数据模块”(F7),选择“地形类别”类目。

选择所需的地形类别(纹理集),然后双击(或右键点击选择修改地形类别(Ctrl + M)…)。

地形类别(纹理集)中的 ID

在该地形类别属性中现实的 ID 即为我们所需要的 纹理集ID。将它复制后粘贴至我们的 t3Terrain.xml 文件的 name 键值中。

到以上步骤,我们的添加额外纹理集过程就已经完成。

重新打开地图后,即可发现已经添加成功。

多个纹理集下地形模块中纹理层添加纹理的纹理集选择

如果你对于组件文件夹的使用并不熟悉,请继续阅读以下的处理步骤。

Step4. 重新打包地图文件

最后,我们需要将组件文件夹进行重新打包。

在对修改后的 t3Terrain.xml 文件的保存后,将整个组件文件夹拖入编辑器中,来重新打开地图。

或者通过:文件(F) -> 打开(A) 然后将目录切换至组件文件夹所在的上级目录,然后地图编辑器会自动识别为 .SC2Map 文件,可以直接打开。

然后,使用 文件(F) -> 另保存(S)… 进行,选择保存类型“《星际争霸II》地图文件(.SC2Map)”保存。

注意事项

在默认的地图设定中,地图最大独立纹理数量被设置为 16 个,因此用户无法添加更多的纹理集。

此外,地图纹理会被在游戏加载时直接进行预加载并常驻内存,因此过多的地图纹理集可能导致玩家加载时间增长或游戏时内存需求提高。

综上,在没有必要需求的情况下,不建议增加/使用过多数量的独立纹理。

补充内容

地图(A) -> 地图属性 -> 纹理集 中可以看到,作者可以将多个可用的纹理集添加至地图纹理集中,但在添加至多 2 个纹理集后会收到警告:“无法添加纹理集,这会使当前地图最大独立纹理数量超过数量(16)”。

t3Terrain.xml 文件中可以看到有两个区块:

代码行:<textureSetList num="8">

代码行:<textureList num="64">

从这两行代码中可以发现,单个文件至多允许 8 组纹理集,64 个单独纹理。

其中 textureSetList 为纹理集设置,从索引 0 至 7 分别可设置一个 ID,至多可以设置 8 个,共计至多 64 个单独纹理。

写在最后

本篇笔记可能存在一些错误或者问题,欢迎各位作者和玩家进行指正。

本片文章授权发布于: https://www.bilibili.com/read/cv4417936

发表评论