RimWorld:About.xml文件

前言

相关内容来自RimWorld Wiki ,本文仅做翻译和有限的补充,除非另有说明,所属内容均在 CC BY-SA 3.0 下提供。

RimWorld Wiki:https://www.rimworldwiki.com/wiki/Main_PageRimWorld

RimWorld Wiki - About.xml:https://www.rimworldwiki.com/wiki/Modding_Tutorials/About.xml

水平有限,如有错漏,敬请见谅

如果您喜欢这篇文章,麻烦大家帮我点个赞,谢谢大家的支持!

About.xml是一个必要文件,用于RimWorld识别模组,使模组可以被加载。About.xml定义了模组的内部标识符和面向用户名称,以及在游戏内模组管理器中显示的简短描述。并定义了兼容性问题,比如模组之间依赖关系和加载顺序。

开始

About.xml文件应该直接放在About文件夹中。请注意,文件夹和文件名都是区分大小写的,必须完全按要求拼写。请参阅模组文件夹结构指南了解更多信息。

Mods
└ MyModFolder
   └ About
      └ About.xml

About.xml的是一个标准的XML文件,使用<ModMetaData>作为根标签:

<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>

  <!-- 其他标签 -->

</ModMetaData>

必需标签

<packageId>:模组标识符

<packageId>AuthorName.ModName</packageId>
  • 模组的内部标识符,用于依赖模组,加载顺序或MayRequire属性的识别。packageid字母和数字组成,并**至少使用一个句点(.)**分隔两个字符串。通常建议使用YourName.YourModNameYourProjectName.YourModNameYourName.YourSeriesName.YourModName,或者类似的命名方式;
  • packageId在所有模组中必须是全局唯一的。如果RimWorld遇到多个具有相同packageId的模组(即使这些模组不在当前启用的模组列表中),将会抛出错误并且只有第一个模组可用。
  • 使用相同packageId的唯一的例外是,如果本模组是你正在fork或continue一个模组,并希望它作为原模组的一个替代。这种情况下,玩家必须取消订阅原始模组才能使用本模组;
  • 注意:packageId不区分大小写,因为RimWorld会在内部将所有id转换为小写,大写是为了可读性。因此除了大小写外的两个相同的id将被解析为相同。

<name>:模组名称

<name>My Mod Name</name>
  • 模组名称不需要是全局唯一的,大多数情况下都使用packageId对模组进行引用;
  • 但是 PatchOperationFindMod仍然使用模组名称,因此应该尽量避免在非必要情况下改变模组名称;
  • 可以使用中文。

<author>:作者名

<author>Author Name, Another Author Name, A Third Author Name</author>

<!-- 或  -->

<authors>
  <li>Author Name</li>
  <li>Another Author Name</li>
  <li>A Third Author Name</li>
</authors>

模组的作者,通常是你自己。可以通过用逗号分隔或使用<li>节点来指定多个作者。

<description>:模组描述

<description>This is the description of this mod.</description>
  • 模组的纯文本描述。用来作为模组在模组管理器(包括原版模组管理器)中的内容描述;
  • 如果将模组上传到Steam创意工坊,这也将作为模组在创意工坊中的初始描述。创意工坊项目描述可以在不影响模组本身的情况下更改,因此通常建议在About.xml中使用较为简短的模组描述;
  • 可以使用中文。

<supportedVersions>:支持版本

<supportedVersions>
  <li>1.4</li>
</supportedVersions>
  • 模组支持的 RimWorld 版本。如果试图在没有明确指定支持的版本下加载模组,将会给玩家一个警告,但如果玩家选择继续加载模组,模组仍将被加载;

  • 强烈建议只对已明确测试过兼容性的版本指定支持。RimWorld 在不同版本之间发生了巨大的变化,即使是纯xml模组也不能保证在没有对特定版本进行适配的情况下正常工作。

可选标签

<modVersion>:模组版本

<modVersion>1.0</modVersion>
<!-- 或  -->
<modVersion IgnoreIfNoMatchingField="True">1.0</modVersion>

警告: 该标签是在RimWorld v1.4游戏版本中引入的,在之前的游戏版本中,除非使用了IgnoreIfNoMatchingField属性,否则会产生错误。如果模组计划支持旧版本的RimWorld,并且想要使用<modVersion>,则必须添加IgnoreIfNoMatchingField属性。

<modIconPath>:模组图标

<modIconPath>Path/To/Icon</modIconPath>
<!-- 或  -->
<modIconPath IgnoreIfNoMatchingField="True">Path/To/Icon</modIconPath>

在游戏加载界面和设置界面(如果本模组有模组设置)中显示的模组图标。ModIcon.png该是一个 32x32 或 64x64 的 PNG 文件,应避免包含过多的细节或颜色。Unity 纹理压缩会使过于复杂的图标变得非常粗糙。
RimWorld v1.5及以上的游戏版本会自动加载About/ModIcon.png,因此不需要此标签也可添加模组图标。因此只有当出于某种原因需要将模组图标存储在Textures文件夹(即贴图文件夹)中时才需要该标签。

警告: 该标签是在RimWorld v1.5游戏版本中引入的,在之前的游戏版本中,除非使用了IgnoreIfNoMatchingField属性,否则会产生错误。如果模组计划支持旧版本的RimWorld,并且想要使用<modIconPath>,则必须添加IgnoreIfNoMatchingField属性。

<url>:网络链接

<url>https://steamcommunity.com/workshop/filedetails/?id=2009463077</url>
示例URL是最新版本Harmony的Steam创意工坊页面。

一个可以在模组信息中显示的网页链接。可以是任何链接,大多数模组会链接到它们的主要下载源,如Steam创意工坊页面,GitHub存储库或Ludeon论坛。

<descriptionsByVersion>:模组描述(特定游戏版本)

<descriptionsByVersion>
  <v1.4>A different description.</v1.4>
</descriptionsByVersion>

用于为RimWorld的不同版本指定不同的模组描述。Steam创意工坊不使用此功能。

<modDependencies>:模组依赖

<modDependencies>
  <li>
    <packageId>brrainz.harmony</packageId>
    <displayName>Harmony</displayName>
    <steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
  </li>
</modDependencies>
  • 用于指定本模组的依赖模组。如果本模组的依赖模组没有在玩家的模组列表中启用并加载,玩家将被警告,尽管玩家可以选择忽略并强制加载;

  • 请注意,Steam创意工坊并不会自动识别使用该标签内容;如果想让玩家知道他们应该下载一个依赖模组,必须通过Steam 创意工坊的“必需物品”功能添加。

<modDependenciesByVersion>:模组依赖(特定游戏版本)

<modDependenciesByVersion>
  <v1.4>
    <li>
      <packageId>brrainz.harmony</packageId>
      <displayName>Harmony</displayName>
      <steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
    </li>
  </v1.4>
</modDependenciesByVersion>

用于为模组指定仅适用于特定版本的依赖模组。

<loadBefore>:在~之前加载

<loadBefore>
  <li>CETeam.CombatExtended</li>
</loadBefore>
  • 本模组应该在指定模组之前加载。如果本模组不在模组列表中的正确位置,RimWorld会警告玩家;

  • packageId指定模组。

    <loadBeforeByVersion>:在~之前加载(特定游戏版本)

<loadBeforeByVersion>
  <v1.4>
    <li>CETeam.CombatExtended</li>
  </v1.4>
</loadBeforeByVersion>

<loadBefore>相同,但仅适用于指定的RimWorld版本。

<forceLoadBefore>:强制在~之前加载

<forceLoadBefore>
  <li>CETeam.CombatExtended</li>
</forceLoadBefore>

<loadBefore>相似,不同的是<forceLoadBefore>不光只是显示警告,RimWorld会强制要求将本模组放在所有指定模组之前加载,不允许在任何指定模组之后加载本模组。请注意,外部模组管理器(如RimPy)可能不尊重此字段。

<loadAfter>:在~之后加载

<loadAfter>
  <li>erdelf.HumanoidAlienRaces</li>
</loadAfter>
  • 本模组应该在指定模组之后加载。如果本模组不在模组列表中的正确位置,RimWorld会警告玩家;
  • packageId指定模组。

<loadAfterByVersion>:在~之后加载(特定游戏版本)

<loadAfterByVersion>
  <v1.4>
    <li>erdelf.HumanoidAlienRaces</li>
  </v1.4>
</loadAfterByVersion>

<loadAfter>相同,但仅适用于指定的RimWorld版本。

<forceLoadAfter>:强制在~之后加载

<forceLoadAfter>
  <li>erdelf.HumanoidAlienRaces</li>
</forceLoadAfter>

<loadAfter>相似,不同的是<forceLoadAfter>不光只是显示警告,RimWorld会强制要求将本模组放在所有指定模组之后加载,不允许在任何指定模组之前加载本模组。请注意,外部模组管理器(如RimPy)可能不尊重此字段。

<incompatibleWith>:不兼容模组

<incompatibleWith>
  <li>CETeam.CombatExtended</li>
</incompatibleWith>
  • 用于指定与本模组相互不兼容的模组。如果指定模组与本模组同时加载,玩家将被警告;

  • 通常只用于与本模组根本上不兼容的模组,而不应该粗暴的用于和本模组同时加载会仅会产生一些bug的模组。

<incompatibleWithByVersion>:不兼容模组(特定游戏版本)

<incompatibleWithByVersion>
  <v1.4>
    <li>CETeam.CombatExtended</li>
  </v1.4>
</incompatibleWithByVersion>

<incompatibleWith>相同,但仅适用于指定的RimWorld版本。

示例

一个包含了所有标签(包括必需和可选)的About.xml示例:

<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
  <packageId>AuthorName.ModName</packageId>
  <name>My Mod Name</name>
  <authors>
    <li>Author Name</li>
    <li>Another Author Name</li>
    <li>A Third Author Name</li>
  </authors>
  <description>This is the description of this mod.</description>
  <supportedVersions>
    <li>1.4</li>
  </supportedVersions>

  <!--以下为可选标签-->
  <modVersion IgnoreIfNoMatchingField="True">1.0</modVersion>

  <descriptionsByVersion>
    <v1.4>A different description.</v1.4>
  </descriptionsByVersion>

  <modDependencies>
    <li>
      <packageId>brrainz.harmony</packageId>
      <displayName>Harmony</displayName>
      <steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
    </li>
  </modDependencies>

  <modDependenciesByVersion>
    <v1.4>
      <li>
        <packageId>brrainz.harmony</packageId>
        <displayName>Harmony</displayName>
        <steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
      </li>
    </v1.4>
  </modDependenciesByVersion>

  <loadBefore>
    <li>CETeam.CombatExtended</li>
  </loadBefore>

  <loadBeforeByVersion>
    <v1.4>
      <li>CETeam.CombatExtended</li>
    </v1.4>
  </loadBeforeByVersion>

  <forceLoadBefore>
    <li>CETeam.CombatExtended</li>
  </forceLoadBefore>

  <loadAfter>
    <li>erdelf.HumanoidAlienRaces</li>
  </loadAfter>

  <loadAfterByVersion>
    <v1.4>
      <li>erdelf.HumanoidAlienRaces</li>
    </v1.4>
  </loadAfterByVersion>

  <forceLoadAfter>
    <li>erdelf.HumanoidAlienRaces</li>
  </forceLoadAfter>

  <incompatibleWith>
    <li>CETeam.CombatExtended</li>
  </incompatibleWith>
  
  <incompatibleWithByVersion>
    <v1.4>
      <li>CETeam.CombatExtended</li>
    </v1.4>
  </incompatibleWithByVersion>

</ModMetaData>
07-07 14:44:01.144 1936 3340 W ActivityManager: Force finishing activity com.zhiying.settings/.about.LegalInformationActivity 07-07 14:44:01.152 1936 1936 E PowerManagerService: screensaver enable true 07-07 14:44:01.166 1936 1952 E memtrack: Couldn't load memtrack module 07-07 14:44:01.166 1936 1952 W android.os.Debug: failed to get memory consumption info: -1 07-07 14:44:01.215 1936 2009 W InputDispatcher: channel '5cfd4ab com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.215 1936 2009 E InputDispatcher: channel '5cfd4ab com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.215 1936 2009 W InputDispatcher: channel 'c486525 com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.215 1936 2009 E InputDispatcher: channel 'c486525 com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel 'b3becb6 com.zhiying.settings/com.zhiying.settings.about.LegalInformationActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.216 1936 2009 E InputDispatcher: channel 'b3becb6 com.zhiying.settings/com.zhiying.settings.about.LegalInformationActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel '1712ca6 com.zhiying.settings/com.zhiying.settings.about.SystemInfoActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.216 1936 2009 E InputDispatcher: channel '1712ca6 com.zhiying.settings/com.zhiying.settings.about.SystemInfoActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel 'd7b4fb2 com.zhiying.settings/com.zhiying.settings.MainZYActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.217 1936 2009 E InputDispatcher: channel 'd7b4fb2 com.zhiying.settings/com.zhiying.settings.MainZYActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
07-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值