行 17: |
行 17: |
| | | |
| ===资源 Assets=== | | ===资源 Assets=== |
− | 一个 '''asset''' 本质上是游戏中的 <tt>Content</tt> 文件夹,具有唯一的“资源名称”。 资产名称从不包含 <tt>Content</tt>路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如: | + | 一个 '''asset''' 本质上是游戏中的 <samp>Content</samp> 文件夹,具有唯一的“资源名称”。 资产名称从不包含 <samp>Content</samp>路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如: |
| | | |
| {|class="wikitable" | | {|class="wikitable" |
行 24: |
行 24: |
| ! 资源名称 | | ! 资源名称 |
| |- | | |- |
− | | <tt>Content/Portraits/Abigail.xnb</tt> | + | | <samp>Content/Portraits/Abigail.xnb</samp> |
− | | <tt>Portraits/Abigail</tt> | + | | <samp>Portraits/Abigail</samp> |
| |- | | |- |
− | | <tt>Content/Maps/spring_beach.xnb</tt><br /><tt>Content/Maps/spring_beach.es-ES.xnb</tt><br /><tt>Content/Maps/spring_beach.fr-FR.xnb</tt> | + | | <samp>Content/Maps/spring_beach.xnb</samp><br /><samp>Content/Maps/spring_beach.es-ES.xnb</samp><br /><samp>Content/Maps/spring_beach.fr-FR.xnb</samp> |
− | | <tt>Maps/spring_beach</tt> | + | | <samp>Maps/spring_beach</samp> |
| |} | | |} |
| | | |
− | 一个资源可能包含多个子画面或数据条目。例如:<tt>Portraits/Abigail</tt>: | + | 一个资源可能包含多个子画面或数据条目。例如:<samp>Portraits/Abigail</samp>: |
| | | |
| [[File:Modding - creating an XNB mod - example portraits.png]] | | [[File:Modding - creating an XNB mod - example portraits.png]] |
| | | |
− | 因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 <tt>Portraits/Abigail</tt>. | + | 因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 <samp>Portraits/Abigail</samp>. |
| | | |
| ===Load 和 Edit=== | | ===Load 和 Edit=== |
| 可以通过两种概念上的方式来更改资源: | | 可以通过两种概念上的方式来更改资源: |
| | | |
− | * ''Load|加载'' Asset的初始版本。 每个Asset只能同时被一个模组加载。 这主要用于完全替换模组(例如完全改变 NPC 肖像的模组),或提供 <tt>Content</tt> 文件夹中不存在的文件。 | + | * ''Load|加载'' Asset的初始版本。 每个Asset只能同时被一个模组加载。 这主要用于完全替换模组(例如完全改变 NPC 肖像的模组),或提供 <samp>Content</samp> 文件夹中不存在的文件。 |
| * ''Edit|编辑'' 加载后的Asset。 可以对同一资产应用任意数量的编辑。 | | * ''Edit|编辑'' 加载后的Asset。 可以对同一资产应用任意数量的编辑。 |
| | | |
行 54: |
行 54: |
| </pre> | | </pre> |
| | | |
− | 这分为四种主要操作类型(<tt>Load</tt>、<tt>EditData</tt>、<tt>EditImage</tt>、<tt>EditMap</tt>),在 内容修补程序自述文件中的更多详细信息(见下文)。 | + | 这分为四种主要操作类型(<samp>Load</samp>、<samp>EditData</samp>、<samp>EditImage</samp>、<samp>EditMap</samp>),在 内容修补程序自述文件中的更多详细信息(见下文)。 |
| | | |
| ==开始== | | ==开始== |
| ===了解Json=== | | ===了解Json=== |
− | 在为 Stardew Valley 创建 mod 时,您会注意到很多文件的名称末尾带有 <tt>.json</tt>。 这意味着它们被格式化为 JSON,这只是一种编写代码可读的文本的方式。 如果您以前没有使用过 JSON,请阅读 ''[https://towardsdatascience.com/an-introduction-to-json-c9acb464f43e An Introduction to JSON]'' 会助于了解文件在做什么。 | + | 在为 Stardew Valley 创建 mod 时,您会注意到很多文件的名称末尾带有 <samp>.json</samp>。 这意味着它们被格式化为 JSON,这只是一种编写代码可读的文本的方式。 如果您以前没有使用过 JSON,请阅读 ''[https://towardsdatascience.com/an-introduction-to-json-c9acb464f43e An Introduction to JSON]'' 会助于了解文件在做什么。 |
| | | |
| ===创建示例模块=== | | ===创建示例模块=== |
行 64: |
行 64: |
| <ol> | | <ol> |
| <li>安装 [https://smapi.io/ SMAPI] 和 {{nexus mod|1915|Content Patcher}}.</li> | | <li>安装 [https://smapi.io/ SMAPI] 和 {{nexus mod|1915|Content Patcher}}.</li> |
− | <li>解压游戏的<tt>Content</tt>文件夹,这样您就可以看到每个资产包含的内容。</li> | + | <li>解压游戏的<samp>Content</samp>文件夹,这样您就可以看到每个资产包含的内容。</li> |
| <li>修改或创建SMAPI内容包。</li> | | <li>修改或创建SMAPI内容包。</li> |
− | <li>使用以下内容在同一文件夹中创建一个 <tt>content.json</tt> 文件: | + | <li>使用以下内容在同一文件夹中创建一个 <samp>content.json</samp> 文件: |
| {{#tag:syntaxhighlight| | | {{#tag:syntaxhighlight| |
| { | | { |
行 80: |
行 80: |
| | | |
| ===内容格式=== | | ===内容格式=== |
− | 您在上面创建的 <tt>content.json</tt> 文件告诉 Content Patcher 要更改什么。 这有两个主要领域: | + | 您在上面创建的 <samp>content.json</samp> 文件告诉 Content Patcher 要更改什么。 这有两个主要领域: |
| | | |
− | * <tt>Format</tt>:格式版本。 您应该始终使用最新版本(当前为 1.19.0)来启用最新功能并避免过时行为。 | + | * <samp>Format</samp>:格式版本。 您应该始终使用最新版本(当前为 1.19.0)来启用最新功能并避免过时行为。 |
− | * <tt>Changes</tt>:您要进行的更改。 每个条目称为“补丁”,并描述要执行的特定操作:替换此文件、将此图像复制到文件中等。您可以列出任意数量的补丁。 | + | * <samp>Changes</samp>:您要进行的更改。 每个条目称为“补丁”,并描述要执行的特定操作:替换此文件、将此图像复制到文件中等。您可以列出任意数量的补丁。 |
| | | |
− | 您可以在 <tt>Changes</tt> 字段中列出任意数量的补丁,每个补丁都由 <code>{</code> 和 <code>}</code> 包围。 有关更多信息,请参阅下一节,但这里有一个快速示例: | + | 您可以在 <samp>Changes</samp> 字段中列出任意数量的补丁,每个补丁都由 <code>{</code> 和 <code>}</code> 包围。 有关更多信息,请参阅下一节,但这里有一个快速示例: |
| {{#tag:syntaxhighlight| | | {{#tag:syntaxhighlight| |
| { | | { |
行 104: |
行 104: |
| }|lang=javascript}} | | }|lang=javascript}} |
| | | |
− | (还有其他字段,如 <tt>ConfigSchema</tt> 和 <tt>DynamicTokens</tt> 用于更高级的用法;这些都包含在完整的自述文件中。) | + | (还有其他字段,如 <samp>ConfigSchema</samp> 和 <samp>DynamicTokens</samp> 用于更高级的用法;这些都包含在完整的自述文件中。) |
| | | |
| ==下一步== | | ==下一步== |