Cave:入门指南
Cave:入门指南
Lesson 12 of 19 • 50 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Cave 是一个游戏引擎,意味着它可以让你把想法变成真实的视频游戏。它让你可以把所有东西组合起来,创建关卡设计、界面和逻辑。但对于实际的艺术创作,比如纹理、3D模型、动画、声音和音乐,你可能会更倾向于使用专门的工具。例如 Blender、3Ds Max、Maya、Sketchup 用于3D,Adobe Photoshop、GIMP、Krita 用于图像处理,或者 Audacity 用于声音。当然,你也可以使用其他任何外部工具。这里重要的是:
大多数游戏都使用引擎外部制作的内容。
在 Cave 中也不例外。这意味着你需要将这些文件导入到引擎中,因此理解如何导入以及良好与不良的实践非常重要。导入是将这些文件带入 Cave,使它们成为你项目一部分的步骤。
本课介绍初学者的导入工作流程。
你将学习:
- Cave 可以导入哪些类型的文件。
- 导入的文件在 Cave 中变成什么。
- 为什么简单的首次导入比大量资源包更好。
- 模型导入如何生成多种资源类型。
- 导入后需要检查什么。
目标是帮助你理解外部文件成为 Cave 资源时发生了什么。
可以导入什么?
Cave 可以导入多种外部内容。
| 导入文件类型 | 变成 |
|---|---|
| 图片(多种格式) | 纹理资源 |
| OGG 音频 | 音频资源 |
| TTF 字体 | 字体资源 |
.cavePkg 文件 |
已导入的 Cave 资源包 |
| 3D 模型 | 网格、材质、纹理、骨架、动画和模板,具体取决于文件 |
导入后,这些文件会成为 Asset Browser 中的 Cave 资源。
这意味着它们可以被用在场景、材质、实体和实体模板、界面、音频系统、脚本、逻辑等各处!导入的文件不再是磁盘上的松散文件,而是成为项目内容,Cave 可以引用、保存、组织和重复使用。
Cave 使用自己的格式
导入任何文件到 Cave 时(图像、纹理、音频、3D 模型等),资源都会转换为 Cave Engine 专有的自定义格式。这很重要,因为这种内部格式解析更快,且引擎能更高效地使用,提供游戏的最佳性能。引擎自动进行许多内部优化和缓存,确保你的资源已准备好用于游戏制作。
> 这些都是内部过程,你无需担心,但理解这一过程以及它对你的影响(以及为何它好)是必要的。
如果你将 .png 图片导入 Cave,最终游戏不会直接使用 png 文件。当你将其拖入引擎时,会经过快速转换,然后改用 Cave 格式。导入音频或 3D 模型时也是一样。这个信息对 3D 资源尤其重要:Cave 不直接使用原始的 DCC 格式如 .fbx、.obj、.glb,虽然可以导入,但会转为引擎格式。
之所以这样,是因为这些格式虽然流行,但在游戏中解析像 fbx 或 png 文件的成本很高,会影响性能。所以 Cave 会提取所有必要数据,如网格、材质、动画、纹理,然后转换存储为引擎使用的格式。
这有三点重要影响:
- 你的游戏运行更快,且占用磁盘更少。
- 资源导入是破坏式的:Cave 不保留 RAW 资产的原始引用,如果你在外部修改了它,必须重新导入。
- 部分功能可能不可用:虽然支持某些资源格式,部分格式内的功能可能不被 Cave 支持。遇到此情况会通知你,并且导入过程中不会包含这些功能。
了解了导入流程,我们继续学习具体操作。
通过拖放导入图片
你可以通过拖放图片到 Asset Browser 来导入。
Cave 支持以下常见图片格式:
- PNG
- JPG 和 JPEG
- TGA
- BMP
- HDR
- PSD
- PNM
- GIF
- PIC
- DDS
导入的图片成为 纹理资源,可用于材质、UI元素、天空设置及其他需要图片数据的系统。例如,纹理可以用作岩石材质的颜色贴图,UI 中的图标,或场景的天空盒图片。
首次测试时,保持简单:导入一个纹理,将其赋予材质,将该材质应用于场景中的网格,并在 3D View 中查看结果。
导入音频文件
音频也可以通过拖放导入。当前,Cave 支持导入 OGG 音频文件。如果你的音频是其他格式,请先转换为 OGG。你可以使用在线转换工具,也推荐使用免费且易用的软件 Audacity,它可以轻松将音频保存为 ogg 格式。
OGG 文件是一种由 Xiph.Org Foundation 开发的开源多媒体容器格式,主要用于流式传输和存储高质量数字音频,通常比传统 MP3 在更小文件大小下提供更好的音质。参考
导入的音频成为音频资源,可以在引擎中任何位置使用,例如音频播放器组件、逻辑积木,或通过 Python 代码调用。例如:
cave.playSound("My Audio File")
好的首次音频导入应短且易于测试:
- 拾取金币的音效
- 按钮点击声
- 门开启声
- 简单的环境循环音
- 游戏配乐
导入字体和 Cave 包
Cave 可以导入 TTF 字体文件。TTF(TrueType Font)是由苹果最初开发,后由微软采纳,成为当前常用的数字可缩放文本渲染标准格式之一。
字体主要用于 UI Element Component,使你可以创建游戏 HUD、文本、菜单、按钮、字幕、片尾字幕、对话界面等。字体选择会对界面产生显著影响,即便是简单菜单也是如此。
导入 Cave 包
Cave 也可以导入 .cavePkg 文件。Cave 包是可以带入其他项目的 Cave 资源包。
你可以在 Asset Browser 中右键点击某文件夹或文件,将其导出为 Cave 包。导出后,你可以将该包导入到其他项目。此功能对于在不同项目间共享通用逻辑非常有用。请注意,导出时只会包含你右键点击的文件夹或资产内的内容。例如,如果你要导出一个使用多张纹理的材质,务必先将所有纹理放入同一个文件夹,再导出该文件夹。否则导入材质时,纹理不会被包含。
当你将 Cave 包拖放到 CaveEngine 的 Asset Browser 中,它会被导入,并重新创建导出时原始文件结构到你的当前项目中。此功能同样适用于共享可复用资源、将默认内容带入新项目或在项目间移动资源。
导入 3D 模型
现在进入3D游戏引擎最重要的部分之一,即3D模型导入。Cave 使用 assimp 支持通过其模型导入器导入多种3D模型格式。
导入器支持多种模型格式,但 FBX 是 Cave 推荐的主要格式。
模型导入可以同时生成多种资源类型:
- 网格
- 材质
- 纹理
- 骨架
- 动画
- 实体模板
具体结果取决于原始文件。
一个简单的箱子模型可能只生成网格、材质、纹理和模板;一个动画角色可能生成网格、骨架、动画、材质、纹理及更复杂的模板。
推荐的首次导入
对于首次导入测试,使用简单、整洁的资源。Kenney 资源包 (CC0) 是很好的初学者选择,因为它组织良好、轻量且易于理解。你也可尝试 Quaternius 资源 (CC0) 或浏览 FAB Asset Store。
好的首次导入可以是一个箱子、一块石头、低多边形树、简单的建筑或角色。避免从庞大的角色包或巨型环境文件开始。简单的资源使你更容易理解 Cave 创建了什么,哪些设置重要,以及导入资源在 Asset Browser 中的展现方式。之后再尝试更复杂的场景。
步骤导入模型
当你将一个资产(如 FBX)拖放到 Cave 的 Asset Browser 时,会看到类似的窗口:

支持一次拖放多个文件,每个文件会创建一个标签页。在每个标签页中,你可以选择要导入的资源。这也会显示资源类型,如果展开每种资源头部,还能看到 Cave 导入器识别和转换的具体资源。你可以单独选择要导入哪些资源,是否重命名对应文件。导入后你也可以更改资源命名。
在顶部,每个文件标签之前,您会看到两个全局选项(针对每个资源导入):
- 设置,允许您选择是否为导入的资源创建子文件夹,或者是否希望在引擎生成的实体模板中自动生成物理属性。
- 还有过滤器选项,当您导入大量资源和节点时非常有用,您只关注文件中的特定内容,例如网格。
一个基本的模型导入通常是这样的步骤:
- 在资源浏览器中创建或选择一个文件夹。
- 将模型文件拖入该文件夹。
- 等待 Cave 解析文件。
- 审查导入选项。
- 选择应导入的生成资源。
- 如有需要,调整导入比例。
- 确认导入。
- 在资源浏览器检查生成的资源。
导入选项可按类型分组显示生成的资源。
这让您可以决定要导入哪些内容,而不是盲目接受所有内容。这很有用,因为模型文件可能包含您实际不需要的更多数据。
重要提示:
如果您下载数百个资源或资源包,如 Kenney 或 Quaternius 资源包,您会注意到这些包通常每个对象有一个不同的 FBX 文件,其中每个 FBX 文件都包含材质副本,有时甚至包括纹理,这些材质和纹理会在所有资源中共享使用。
如果您将所有包含相同材质副本的资源文件拖入 Cave,Cave 会导入所有这些副本,造成项目中生成大量不必要的数据,最终导致游戏性能下降。这不是引擎的问题,只是因为每个 FBX 文件内都有材质的副本。
在这种情况下的最佳做法是先导入一个 FBX 文件,查看里面内容,确认其材质。导入第一个文件后,材质已经在项目中存在,然后导入其他文件时使用过滤器关闭材质和纹理导入,因为这些已经存在。这样,当您点击导入时,Cave 会尝试根据名称找到已导入的材质并重用它。
了解导入的网格
一个导入的模型可能生成一个或多个网格,这取决于其在原始数字内容创建(DCC)工具中的构建方式。
例如:
| 源模型 | 可能的导入结果 |
|---|---|
| 简单箱子 | 一个网格,一个材质,一个实体模板。 |
| 分离零件的物体 | 多个网格和材质,一个实体模板。 |
| 动画角色 | 网格、骨架和动画,一个实体模板。 |
导入后,检查生成的网格资源和实体模板。
请注意,每次导入都会生成一个实体模板。
实体模板试图还原您在 DCC 工具(如 Blender)中构建的场景配置。例如,如果您在建模软件中创建了布局,将对象放置在特定位置等,这些都会体现在实体模板中。通常您不会直接使用原始实体模板,但它有助于快速将对象放入场景中以识别它们,或让它们变为本地对象,而非使用模板并开始在 Cave 中编辑。
导入资源后,检查常见问题:
- 对象是否过小?
- 是否过大?
- 旋转是否正确?
- 是否被意外分割?
- 生成的模板是否正确?
及早发现这些问题比在层级中广泛使用资源后再发现要好。
如果发现任何问题,建议在 Blender 或其他 DCC 软件中打开资源确认其正确性。我们也建议您在导入 Cave 之前先对网格进行三角化处理。
重要提示: Cave 在导入 3D 模型时会自动尝试对面进行三角化,但有时可能会有三角化错误,导致您的模型出现"洞"或错误的面。为避免此类问题,强烈建议您在模型工具中自行进行三角化处理。
理解材质和纹理
导入的模型也可能生成材质和纹理。
材质控制表面的外观,纹理为材质提供图像数据。
导入后,请始终检查材质:
- Albedo 纹理是否已分配?
- 法线贴图是否正确分配?
- 粗糙度或金属度贴图是否导入?
- 材质在视口中是否看起来正确?
导入功能很实用,但不是万能的。
导入后调整材质很常见,比如调整粗糙度,修复缺失纹理,或选择更适合您的游戏视觉风格的材质设置。
多材质网格
在 Cave 中,一个网格只使用一个材质。如果您在 DCC 工具中创建的对象使用了多个材质,Cave 会将其显示为多个网格。
一个实体仍然可以拥有多个网格组件,这样最终场景中的对象看起来是完整的,结构只是不同:
拥有多个材质的对象
使用材质 A 的网格组件
使用材质 B 的网格组件
使用材质 C 的网格组件
这让 Cave 保持清晰的一网格对一材质的关系,同时能正确呈现复杂导入对象。
由于 Cave 的工作方式,如果导入多材质网格,您会在资源浏览器看到该网格被拆分为不同部分。但 Cave 会尝试在实体模板中组合所有网格,重新创建最终实体。
导入的实体模板
导入模型时,Cave 会创建一个实体模板,代表原始设置。此模板很有用,因为它尽可能保留了预期的组件配置。
例如,导入一栋建筑可能生成:
- 多个网格资源。
- 多个材质资源。
- 纹理资源。
- 一个将各部分组合起来的实体模板。
该模板通常是拖入场景的最简便资源。
如果导入对象作为模板看起来正确,您可像使用其他 Cave 模板一样复用它。目标是将资源导入场景并使其转变为可玩的空间。
基本导入技巧
保持导入清晰:
- 模型优先使用 FBX 格式。
- 提前三角化面。
- 音频使用 OGG 格式。
- 资源命名保持可读性。
- 优先使用带空格或 PascalCase 的名称。
- 导入到有序的文件夹。
- 检查导入比例。
- 审查生成的材质。
- 在视口测试导入的模板。
- 导入后保存。
导入是开发的正常环节。
分步操作,检查结果,再继续构建。良好的导入流程在项目大量使用自定义内容时能为您节省大量时间。