添加与覆盖资产

在 RGL 中,您可以轻松地覆盖现有资产或在编辑器中为自定义模组创建新资产。覆盖机制的生效方式是将现有资产替换为你的模组资产目录中提供的对应资产。 它会尝试匹配您的自定义资产与其他模块先前通过其名称注册的资产。模块的加载顺序会影响这一过程。

如果除了 Native 模块之外还分别加载了 模组 A模组 B ,则最终资产及其来源列表如下:

Native 模组 A 模组 B 结果
adobe_wall
tarnished_metal
ground_mud
marble
-
adobe_wall
tarnished_metal
-
-
metal_plate
adobe_wall
-
ground_mud
-
-
Module B::adobe_wall
Module A::tarnished_metal
Module B::ground_mud
Native::marble
Module A::metal_plate

当前可在自定义模组中替换的资产类型为:

文件夹结构

资产系统会根据模块目录中的某些文件夹名称进行处理。这是这些文件夹及其用法的列表:

Modding Permissions

资产系统会根据游戏运行的可执行文件的版本寻找不同的文件夹。根据这些文件夹的存在与否,它判定一个模块是否可以被修改,或只能在只读模式下使用。如果您想发布您的模块,您可以打包您的资产并共享打包后的文件夹,而不需要发布成千上万的文件及其源文件。您有三个选项来打包您的资产。

您也可以像使用您的模组一样共享您的模组,以允许其他人修改它。在这种情况下,你必须分发 AssetsAssetSources 和可选的 RuntimeDataCache 文件夹。

材质覆盖

覆盖材料可以通过创建一个新的材质来完成,其名称与您要覆盖的材质相同。 导航到您的模块的assets目录,并在浏览器窗格中的空白处右击。创建一个新的材质,并将其重命名为与您要覆盖的材质相同的名称。

此时,系统中所有的材质引用将被重定向到您的自定义材质。

网格模型覆盖

模型可以从多种文件格式(如Trf、Fbx)导入。从单个文件导入的资源根据 <>资产命名规则<> 按其名称进行分组。想象如下一个fbx文件:

根据资产命名的惯例,前三个资源将被归入一个网格,其中有三个子网格属于不同的 LOD,最后从 Model.fbx 导入两个资产:wall (Mesh)和 bo_wall (Physics shape)。最后将从 Model.fbx 中导入两个资产:wall (Mesh) 和 bo_wall (Physics shape)。

按照这些规则,您可以导出一个新的几何文件(例如 fbx),其中包含一组名称以 wall 开头的网格。在这种情况下,一个新的 wall 网格将从这些子网格中创建,而现有的网格将被您提供的网格完全替换。几何图形文件的名称不在考虑之列。值得一提的是,网格覆盖是在网格层面进行的。不能通过模组覆盖来覆盖单个子网格。



纹理覆盖

纹理的覆盖与材质非常相似。你需要导入一个新的纹理,其名称与你要覆盖的纹理相同。你也可以将任何已经导入的纹理重命名为与要覆盖的纹理名称相匹配的字符。



物理形状覆盖

覆盖物理形状需要你导入一个与你要替换的资产名称相同的物理形状。检查 <>资产命名规则<> 以了解如何导入物理形状。