Cave:入门指南
引擎架构与术语
Lesson 5 of 19 • 10 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 是设计得简单易学的,但它仍然有一些重要的概念需要你理解。
本课将解释你将在编辑器中随处可见的核心词汇:场景、实体、组件、资源、实体模板、变换、刚体、角色组件、Python 组件、逻辑砖、时间线和运行时。
这是一个顶层概述,并未深入每个单词的具体意义,但理解这些词汇对提高你对引擎的理解非常重要。一旦这些词汇对你来说有意义,引擎的其他部分也会变得更容易理解。
大局观
大多数 Cave 项目都是由几个重复的概念构建的:
| 概念 | 简单解释 |
|---|---|
| 场景 | 一级、菜单、测试区域或可玩空间。 |
| 实体 | 场景中的一个对象。 |
| 组件 | 附加到实体的特性。 |
| 资源 | 存储在资源浏览器中的可重用项目内容。 |
| 实体模板 | 一种可重用的实体设置,类似于预制体。 |
例如,想象一个关卡中的木箱:

- 这个关卡是一个
场景。 - 放置在关卡中的箱子是一个
实体。 - 箱子的位置存储在它的
变换中。 - 可见模型由
网格组件处理。 - 碰撞可以由
刚体组件处理。 - 箱子使用的模型、材质和纹理是
资源。
如果你想在多个场景中重用那个箱子设置,你可以将其保存为一个 实体模板。
场景
场景是实体的集合。
场景可以用于:
- 游戏关卡。
- 菜单。
- 测试地图。
- 原型房间。
- 剧情空间。
只有活动场景在主 3D 视图中被编辑。当你测试游戏时,Cave 会将场景作为游戏而运行,而不仅仅是编辑器内容。
在导出或作为运行时测试项目时,项目设置决定哪个场景被用作启动场景。你可以通过转到 设置标签 来更改它。
实体
实体是场景中的一个对象。
实体可以是可见的或不可见的。它们可以简单或复杂。
实体的例子:
- 玩家角色。
- 一扇门。
- 一个相机。
- 一盏灯。
- 一个触发器。
- 一个 UI 按钮。
- 一个生成点。
- 用于组织的文件夹。
实体本身大多是一个容器。它实际能够做什么取决于附加的组件。
组件
组件为实体添加行为或数据。
Cave 允许你通过组合组件来构建实体,而不是为每种可能的东西定义一个巨大对象类型。这正是你应该构建游戏不同元素的方式,通过将多个不同类型的组件组合到实体中。
例如:
| 实体 | 可能的组件 |
|---|---|
| 静态墙 | 变换、网格、刚体。 |
| 玩家 | 变换、角色、相机、Python。 |
| 门 | 变换、网格、刚体、Python 或逻辑砖。 |
| 点光源 | 变换、灯。 |
| UI 按钮 | UI 元素。 |
这是 Cave 中最重要的理念之一:实体是容器。组件赋予它们特性。
这里还需要提到,另一种组合不同对象类型的方法是使用多实体的子实体层次结构。
实体命名
当你创建一个新实体时,Cave 提供了不同的起始类型,如文件夹、空、网格、点光源、相机、UI 元素、文本和按钮。
这些不是完全独立的世界。它们是方便的起始点。
例如:
- 一个
空是一个具备变换的基本实体。 - 一个
网格实体是一个准备显示网格的实体。 - 一个
点光源实体是一个准备作为光源行为的实体。 - 一个
相机实体是一个准备渲染视图的实体。 - 一个
文件夹是主要用于组织的实体。
你通常可以在之后添加、删除或编辑组件,因此起始类型只是一个有用的快捷方式。
变换
变换告诉 Cave 实体的位置和方向。
它包括:
- 位置。
- 旋转。
- 缩放。
几乎每个场景实体都有一个变换,因为大多数对象需要在世界中的某个地方存在。当你使用小工具移动、旋转或缩放实体时,你是在编辑它的变换。当一个实体被父级对象附属时,它的变换是相对于该层次结构进行评估的。
资源
资源是存储在资源浏览器中的可重用项目内容。重要的是要提到,虽然实体在内部被视为资源,但资源并不等同于实体。
例如:
- 一个网格资源是模型数据。一个网格实体是放置在场景中使用该网格资源的对象。
- 一个材质资源定义了表面的样式。一个网格实体可以引用该材质。
- 一个 Python 脚本资源包含代码。一个 Python 组件可以使用那个脚本。
这种分离是强大的,因为一个资源可以被多次重用。如果十个箱子使用相同的材质,编辑材质资源可以同时更新它们。
实体模板
实体模板是一个可重用的实体设置。请查看下面的截图。实体模板资产在缩略图下方用绿色线条标记:

如果你来自其他引擎,你可以将其视为类似于预制体。
实体模板可以存储:
- 实体层次结构。
- 组件。
- 组件设置。
- 资源引用。
- 子实体。
这对于你想要重用的任何东西都是有用的:
- 敌人。
- 拾取物。
- 门。
- 道具。
- 车辆。
- UI 组件。
- 游戏对象。
而不是一次又一次地重建相同的对象,你只需创建一次作为实体模板,并在需要的地方放置实例。
刚体
刚体赋予实体物理行为。它用于需要碰撞或物理运动的对象。
例子:
- 一个阻挡玩家的箱子。
- 一个可以滚动的球。
- 一扇有碰撞的门。
- 一堵不能被玩家穿过的墙。
刚体是引擎物理部分的一部分。当对象需要与世界进行物理交互时,你将使用它们。
角色组件
角色组件用于角色风格的运动。这与普通刚体不同,因为角色通常需要特殊行为:
- 行走。
- 在墙上滑动。
- 处理斜坡。
- 跳跃。
- 响应玩家输入。
对于玩家或 NPC,角色组件通常是比试图让基本物理对象作为角色工作更好的起点。
当我们谈论 Cave 中的角色组件时,我们是指其角色物理,而不是特定于游戏的逻辑(例如运动等)。
标签和属性
标签和属性帮助你识别和配置实体。
- 标签是一个可以帮助脚本或逻辑查找和分类事物的标签。
- 属性是面对编辑器的可编辑值。它们让你调整行为,而无需每次都重写代码。
例如,一个敌人可能具有如下属性:
- 行走速度。
- 生命值。
- 攻击距离。
- 巡逻目标。
良好的属性使用使你的游戏更易调整。
属性不仅限于实体:场景、逻辑砖和其他资产也可以具有属性。
当我们在谈论 Cave 中的属性时,我们具体指的是可以通过代码使用 Python 字典访问的属性。它们几乎总是也在编辑器中可用。
Python 组件
Python 组件让实体运行 Python 逻辑。
这在你想要自定义行为时非常有用,例如:
- 打开一扇门。
- 移动一个平台。
- 处理玩家输入。
- 生成一个对象。
- 更新 UI 文本。
- 触发事件。
Python 组件是 Cave 中编程游戏玩法的主要方式之一。
Python 代码组件
Python 代码组件用于代码直接存储在该组件中,而不是作为单独脚本资产链接。这在快速测试、小型行为或原型时非常有用。
对于较大的游戏玩法系统,单独的 Python 脚本资产通常更容易组织和重用。
逻辑砖
逻辑砖是构建逻辑的一种可视化方式。它们在你想要无需直接编写 Python 代码的情况下很有用。
如果你了解 Unreal 的蓝图,逻辑砖在类似的思想家族中:你以可视化的方式连接逻辑,而不是将所有内容编写为文本。
它们特别有用,以便创建你想要的任何逻辑,而无需撰写 Python 代码。例如,游戏行为和逻辑、对象行为、连接系统、触发器等。
你将在本指南中稍后学习它们。
时间线
时间线是用于创作序列的资产。时间线可以随着时间的推移动画或触发事物。
它们对于:
- 剧情。
- 相机移动。
- 脚本事件。
- 协调的游戏序列。
时间线并不是每个游戏所必需的,但在你希望某些事情按照特定创作顺序发生时,它们很有用。
重要提示: 时间线不是用于单个动画编辑的手段,例如为你的角色编辑行走循环动画。在这种情况下,你必须使用专门的 DCC 软件,如 Blender,然后将其导入到 Cave。
玩家和游戏运行时
- Cave 编辑器是你构建项目的地方。
- Cave 玩家是运行游戏的运行时。
当你在编辑器中按“播放”时,Cave 在编辑器内以类似游戏的模式运行你的场景。当你作为独立运行时测试时,Cave 在一个单独的玩家窗口中启动游戏。
最终导出的游戏作为玩家/运行时构建运行,而不是作为编辑器。这种分离很重要,因为有些东西仅在编辑器中(供您调试和/或开发项目),而其他则是实际游戏的一部分。
最重要的关系
如果您只记住这节课的一件事,请记住这一点:
一个场景包含实体,实体包含组件,而组件通常使用资产。
这就是 Cave 项目的基础。