跳至正文
版本:latest - a1.147.x ⚖️

创建与导入资产

了解如何创建自定义资产并将其导入到 nanos world

前提条件

在继续之前,请确保你已按照首要步骤安装了虚幻引擎并下载了 Assets Development Kit 项目。

同时建议阅读资产指南以了解此处将提及的一些概念。

开始

开始创建你自己的资产的第一步是打开 ADK 项目。 打开后,你会注意到在根目录 Content/ 下有两个文件夹:NanosWorld/MyAssetPack/

ADK 文件夹

如前所述,请勿修改 NanosWorld/ 内部的任何文件,因为任何更改都不会被导出,也不会导入到 nanos world 中。

游戏或插件内容

资产包既可以从游戏内容创建,也可以从插件内容创建。

使用游戏内容意味着你将直接在虚幻项目的 Content/ 文件夹中创建资产,这是创建资产最直接的方式。

或者,你也可以创建内容插件,以便对资产进行更好的组织和隔离。

你可以自行决定使用游戏内容还是插件内容。 如果你不确定,可以先使用游戏内容来创建你的资产:

选项 A:使用游戏内容

对于游戏内容,你在 Content/ 文件夹内创建的任何文件夹都可以被烘焙并作为资产包挂载到 nanos world 中。

提示

为你在 Content/ 内部创建的文件夹选择唯一的名称,以避免与其他资产包发生名称冲突。

例如,如果你创建了一个名为 Content/Weapons/ 的文件夹,而另一个资产包也拥有一个名为 Content/Weapons/ 的文件夹,它们就会发生冲突,并且无法同时加载。

在 ADK 项目中,我们已经提供了一个名为 Content/MyAssetPack/ 的文件夹作为游戏内容文件夹的示例。 你可以将其重命名为你想要的任何名称,或者在此之外创建你自己的文件夹。

选项 B:使用插件内容

对于插件内容,你必须在虚幻引擎中创建一个插件,并在该插件的 Content 文件夹中创建你的资产。 通过这种方式,你可以对资产进行更好的组织和隔离,而且你还可以轻松地与他人分享你的插件,而无需分享整个虚幻项目。

第一步是创建一个插件,因此请在 编辑 ⬇️ 插件 处打开插件标签页:

然后在左上角点击 + 添加

填写用于创建插件的文件夹名称,其他字段均非必填:

创建完成后,在内容侧滑菜单设置中启用 显示插件内容 选项:

接着在左侧,你会找到刚刚创建的插件文件夹,这个文件夹将作为你的资产包文件夹:

导入外部资产

你创建或导入的所有资产都必须包含在你创建的文件夹中(插件内容文件夹 Plugins/MyAwesomeAssetPack Content/ 或游戏内容文件夹,例如 Content/MyAssetPack/)。 你可以随意创建子文件夹并按照你喜欢的方式进行组织。

你可以将计算机中的任何文件拖放到这些文件夹中,例如 FBX 网格体或 WAV 声音。

请查看导航侧边栏,获取有关如何导入特定资产(骨骼网格体、地图等)的更具体指南和示例。 你可以先查看这些内容,然后再返回此处完成导出:

导入静态网格体assets-modding/creating-assets/static-meshes 导入角色网格体assets-modding/creating-assets/skeletal-meshes/characters-meshes 导入载具网格体assets-modding/creating-assets/skeletal-meshes/vehicles-meshes 导入武器网格体assets-modding/creating-assets/skeletal-meshes/weapons-meshes 导入地图assets-modding/creating-assets/maps-and-levels/importing-maps

导出与烘焙你的资产

在你导入并创建好资产后,从虚幻引擎中导出它们非常简单。

为此,请选择 平台 ➡ 烘焙内容 ➡ 烘焙内容

这将开始烘焙与打包过程,这可能会花费一些时间,具体取决于资产之前是否已经被加载过。 通常只有在首次会耗时较长。

提示

默认情况下,虚幻引擎会烘焙项目中的所有内容。 如果你有太多的资产,可以通过在项目设置中仅选择你想要烘焙的文件夹或地图来缩短烘焙时间。

完成后,前往 ADK 项目的 Cooked 文件夹:

assets-development-kit/Saved/Cooked/Windows/NanosWorldADK/

注意

请不要将 Cooked 资产文件夹与 Content 项目文件搞混。 确保你处于 Saved/Cooked/ 文件夹中!

  • 使用游戏内容:你可以在 Content/ 内部找到烘焙后的文件夹。
  • 使用插件内容:你可以在 Plugins/ 内部找到烘焙后的文件夹。

在此文件夹中,你可以找到所有烘焙后的资产。 游戏内容结果的示例:

找到包含你资产的 Cooked 文件夹后,我们可以在下一节中创建我们的资产包,以便将其导入到 nanos world 中:

创建你的资产包

你可以手动创建资产包,也可以使用 CLI 轻松且自动地完成,但我们建议第一步先手动操作,以了解其工作原理:

创建一个新的资产包文件夹

第一步是在你的 nanos-world-server/Assets/ 内部为你的资产包创建一个新文件夹。

例如 nanos-world-server/Assets/my-asset-pack/

注:必须使用 kebab-case(短横线隔开式)命名,因为这是 nanos world 资产和包名称的强制标准。

复制烘焙后的资产

然后将所有烘焙后的文件夹(即 Content/Plugins/ 内部的文件夹)复制到你新的资产包文件夹中。

例如,如果你使用的是游戏内容,并且在其中有两个文件夹 Content/MyAssetPack/Content/MyOtherAssetPack/,请将它们全部复制到你新的 my-asset-pack/ 文件夹中。

如果你使用的是插件内容,请复制整个插件文件夹(例如 Plugins/MyAwesomeAssetPack/),你会注意到它里面有一个 Content/ 文件夹,这是正确的,只需将整个插件文件夹复制到你新的 my-asset-pack/ 文件夹中即可。

创建 Assets.toml 文件

最后,你将在资产包文件夹的根目录下创建 Assets.toml 文件,这是你资产包的配置文件。 你可以从资产包配置中复制并粘贴模板,然后在下一节中填写正确的数值。

最终结果

你最终将得到一个类似这样的文件夹:

Server Folder
NanosWorldServer.exe
Assets/
├── my-asset-pack/
├── MyAssetPack/
├── MyAsset_01.uasset
├── MyAsset_01.ubulk
├── MyAsset_01.uexp
├── MyAsset_02.uasset
├── MyBigMap.umap
└── ...
├── MyOtherAssetPack/
├── MyOtherAsset_01.uasset
├── MyOtherAsset_02.uasset
└── ...
└── Assets.toml
Config.toml
NanosWorldServer.exe

配置你的 Assets.toml

在你的资产包根文件夹中创建好 Assets.toml 之后。 有一些重要的配置需要设置。

在文本编辑器中打开 Assets.toml,并将 unreal_foldersunreal_versionis_plugin_content 配置为正确的值:

Assets.toml
# 虚幻引擎配置
[unreal]
# 要挂载的虚幻引擎文件夹 - 虚幻中使用的 Content/ 或 Plugin/ 内部根文件夹的确切名称
unreal_folders = [
"MyAssetPack",
"MyOtherAssetPack"
]
# 虚幻引擎版本 - 编译此资产包的虚幻版本
unreal_version = "5.7.0"
# 该资产包是否作为插件内容创建
is_plugin_content = false

另一个需要配置的重要部分是 [assets],在其中你可以定义导出的资产列表,以便通过脚本进行引用。

例如,如果你在子文件夹中导出了一个静态网格体 SM_Cube,请在你的 Assets.toml 中这样定义它们:

Assets.toml
# 资产文件
[assets]
# ...

# 静态网格体
[assets.static_meshes]
# Key = Path
SM_Cube = "MyAssetPack/MySubFolder/SM_Cube"
# ...

这样,脚本编写者就可以像这样生成你的方块网格体:

Server/Index.lua
Prop(Vector(0, 0, 0), Rotator(0, 0, 0), "my-asset-pack::SM_Cube")
提示

你可以使用 ADK Assets.toml 生成工具来自动生成你的 Assets.toml!

最终注意事项

注意

在烘焙并复制文件夹后,请勿重命名或删除烘焙后的资产包文件夹内的任何文件/文件夹! 这会破坏资产所使用的所有内部引用,并可能导致它们在显示时没有材质/纹理,甚至导致游戏崩溃。

额外技巧

仅烘焙需要的内容

默认情况下,虚幻引擎会烘焙项目中的所有内容。 如果你有太多的资产,可以通过在项目设置中仅选择你想要烘焙的文件夹或地图来缩短烘焙时间。

启用 仅烘焙地图 设置,并在 打包构建中包含的地图列表 设置中指定地图列表,这样就只会烘焙这些地图以及它们所使用的资产:

此外,你还可以指定 要烘焙的其他资产目录 来包含你想要烘焙的其他文件夹:

正确命名你的资产

我们强烈建议并鼓励你遵循 Allar 的资产命名规范,作为命名资产和组织项目文件夹的模式。

我们在这里总结了最常用的名称:

资产类型前缀后缀
骨骼网格体SK_
静态网格体SM_
物理资产PHYS_
材质M_
材质实例MI_
动画A_
动画蒙太奇A_
粒子P_
声音波形A_
声音提示A__Cue
纹理T__?(参见纹理

减小资产的大小

使用较小的资产尺寸并正确配置纹理压缩(大文件对网络带宽不利)。 我们建议纹理的最大尺寸为 2048x2048,因为这样每个纹理大小约为 5MB。

创建资产缩略图

在资产包根目录下一个名为 Thumbnails/‘ 的文件夹中包含资产的缩略图是一个很好的做法。 这是一种惯例,因为**沙盒**游戏模式会从中读取内容并在生成菜单上显示。 在 Thumbnails 文件夹中添加与资产同名的 .jpg` 文件。

你可以使用 ADK 缩略图生成器工具 来自动生成它们!

使用引擎内容

避免使用引擎内容(即 引擎自带的材质或网格体)。 如果你想使用它们,我们建议将它们复制到你的 Content/YourAssetPack/ 文件夹中,否则它们可能无法被正确导出。

提示

有一些引擎内容是允许使用的,但只能来自以下文件夹 (这些已经包含在基础游戏中,可以安全使用)

  • /Engine/Functions
  • /Engine/BasicShapes
  • /Engine/ArtTools
  • /Engine/EngineMaterials

疑难解答

常见修复方法

大多数问题都可以通过尝试以下步骤轻松解决:

1. 确保你复制的是烘焙后的资产,而非项目资产

虚幻项目文件不能在运行时直接工作,它们必须经过编译/烘焙才能在游戏内加载。 烘焙后的资产通常具有以下扩展名:.uasset.uexport.ubulk参见此处

2. 确保你的 ADK 已更新

使用旧版本的 ADK 烘焙资产可能会导致游戏与你的资产之间出现不兼容的情况。

3. 从项目文件夹中删除 Saved/Intermediate/DerivedDataCache/

有时尝试完整的重新烘焙是很有好处的,因为旧的虚幻版本可能会导致烘焙后的资产损坏。

4. 将所有使用的烘焙资产文件夹复制到你的资产包中

如果你正尝试加载一个地图,并在项目设置中指定了 仅烘焙该地图,它可能会在你的 Saved/Cooked/ 文件夹内生成一个或多个文件夹。 这意味着所有这些文件夹和文件都是加载该地图所必需的。 因此你必须复制那里的每一个文件夹(当然,你不应该为 NanosWorld/ 文件夹创建资产包)。

5. 如果你使用 Git,请确保启用了 LFS

如果你使用 Git(带有 LFS)来上传烘焙后的资产并在 VPS 中克隆它们(这不是一个很好的解决方案),请确保你也在 VPS 机器上启用了 LFS,以便它能在本地正确克隆 LFS 资产。

6. 验证你的虚幻引擎安装

你可能在不经意间修改了引擎资产,这会导致与游戏烘焙资产的不兼容,因为项目会期望一个不同的版本。 在 Epic Games 启动程序中验证你的虚幻引擎安装以确保其有效,然后再次尝试烘焙。

常见问题

导入资产时的常见问题及可能的解决方法:

资产没有材质/纹理

如果你在游戏内加载了资产,但它们没有材质(显示为灰色)。 这可能是两个问题导致的:你没有在 Assets.toml 中正确设置 unreal_folders,或者你错误地从 Cooked 文件夹中修改/移动/复制了文件。

发现损坏的数据,请验证你的安装

如果你看到这个弹窗错误,请确保重试此处列出的所有步骤,或者尝试清理本地的 NanosWorld/Server/Assets/ 文件夹并从服务器重新下载文件。

在加载自定义地图或自定义资产期间/之后游戏崩溃

这通常是因为资产损坏或创建不当造成的,请确保重试此处列出的所有步骤。

已断开连接。 加载地图失败! 已取消或失败!

当游戏找不到要加载的地图时,通常会出现此错误。 这可能是因为配置不当的 Assets.toml unreal_folders 设置,或者是因为你将虚幻项目文件(而非烘焙后的文件)复制到了资产包中。