Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Entity Templates 是 Cave 的可重用实体系统。

它们允许你一次构建实体设置,保存为资产,并在场景中放置其实例。

image.png

如果你来自其他引擎,可以将 Entity Templates 看作是 Cave 的类似预制件工作流程。如果你是游戏引擎的新手,可以将它们视为可重用对象的配方

你不需要每次都重建同样的门、敌人、道具或 UI 小部件,而是创建一次设置并在需要的地方重用它。

什么是 Entity Templates?

Entity Template 是一个存储实体结构的资产。

它可以包括:

  • 一个根实体(每个模板必须有且只能有一个根实体)。
  • 子实体。
  • 组件。
  • 组件设置。
  • 资产引用。
  • 属性。
  • 标签。

当你在场景中放置一个模板时,Cave 会创建该模板的一个实例。

实例使用模板资产作为基础,这意味着它可以保持相同的内部结构,同时作为特定场景中的放置对象存在。

为什么 Entity Templates 重要

许多游戏对象不仅仅是一个网格。

一个道具可能包含:

  • 一个可见模型。
  • 一个触发器。
  • 一个灯光。
  • 一个粒子效果。
  • 一个声音。
  • 给予奖励的逻辑。

一个模板允许你将整个设置保持在一起。

将 Entity Templates 用于以下内容:

  • 玩家角色。
  • 敌人。
  • 道具。
  • 门。
  • 子弹。
  • 车辆。
  • 传送门。
  • 伤害体积。
  • 道具。
  • UI 组件。
  • 可重用的游戏对象。

模板节省时间,也保持重复对象的一致性。如果每个健康道具都来自同一模板,你可以改进模板一次并保持项目的组织。

创建 Entity Template

你可以从资产浏览器创建 Entity Template,或者通过右键单击场景图中的现有场景实体,或按 Ctrl + T 将选定的实体提升为模板。

一个常见的工作流程是先在场景中构建对象,测试它,只有在设置有用时才将其转换为模板。流程如下:

  1. 在场景中构建实体。
  2. 添加所需的组件和子元素。
  3. 调整其设置。
  4. 将其提升为 Entity Template。
  5. 在同一场景或其他场景中重用该模板。

但只要你确定会重用某个对象,例如玩家、敌人、增益等,立即创建它的好习惯是,将其放在资产浏览器中或通过之前所述的提升方法创建。

在场景图中,快速编辑菜单可以将实体提升为模板。编辑器显示的快捷方式是 Ctrl + T

模板资产 vs 模板实例

将模板资产与放置实例分开有助于理解。

概念 意义
模板资产 存储在资产浏览器中的可重用对象设置。
模板实例 场景中该模板的放置副本。

资产定义了可重用的结构。

实例是该可重用结构在具体场景中显示的地方。

编辑 Entity Template

模板作为其自己的资产进行编辑。

当你打开模板进行编辑时,Cave 会切换到模板编辑场景,以便你可以直接编辑模板的内部实体结构。

重要的观点是:

> 模板拥有其内部层级。

场景实例使用该层级,但它们并不是直接拥有其中的每个子对象。这使所有实例保持连接到相同的可重用设置。

值得提及的是,一旦游戏开始,这种情况就不再成立,因为当你启动游戏时,模板的所有层级会立即可用于自定义。因此,在编写你的游戏逻辑时,你可以期望能够与实体模板实例、子对象等进行交互。

例如,如果你打开一个 Enemy 模板并在其中添加一个新的 Health Bar 子对象,则每个该敌人模板的实例都可以受益于更新的结构。

为什么模板子对象不在场景中直接编辑

当模板实例放置在场景中时,内部子对象仍属于模板。这就是为什么 Cave 防止模板子对象在场景中进行直接编辑的原因。

例如,如果一个敌人模板包含:

Enemy
  Body Mesh
  Detection Area
  Health Bar

你应该在模板内部而不是作为单独的场景拥有对象进行编辑这些内部子对象。

这保持每个实例的一致性。如果每个放置的敌人都可以随意编辑其内部子对象,则模板将不再是可靠的可重用对象。

在场景中实例化模板

在模板存在后,你可以将其放置在场景中。

例如,你可以从资产浏览器拖动一个模板到 3D View 中。

当模板被放置时:

  • 它在场景图中以模板实例的形式出现。
  • Cave 为实例使用不同的模板颜色(绿色)。
  • 实例保持与模板资产的连接。

image.png

从工作流程的角度来看,这是构建关卡的最快方法之一。你只需要创建一个可重用的门、道具、敌人或道具一次,然后在需要它们的位置放置实例。

本地模板自定义

模板实例仍然可以在本地进行自定义:

image.png

主要通过根模板实体公开的属性来实现。

这给你带来了有用的平衡:

  • 结构保持可重用。
  • 每个放置的实例可以具有自己的值。

例如,多个敌人可以使用相同的敌人模板,而每个实例具有不同的健康、速度、巡逻设置或行为选项。

本地模板属性的示例

有用的本地属性包括:

属性 示例用法
敌人健康 使一个敌人更脆弱或更强。
敌人速度 创建慢和快的变体。
伤害量 使用不同危险等级的单一危害设置。
传送门目标级别 将每个传送门发送到不同的场景。
道具价值 使硬币、宝石或奖励具有不同的价值。
门锁定状态 使用一个门设置用于锁定和解锁的门。
UI 文本 使用一个 UI 小部件,提供不同的标签。

例如,一个 Portal 模板可以在许多地方使用,如果每个放置的传送门都有一个本地属性来选择目标场景。

启动项目模板示例

启动项目可能包括多种有用模板,具体取决于你选择的项目选项。

你可能会找到示例,如:

  • 玩家模板。
  • 敌人模板。
  • 伤害模板。
  • 传送门模板。
  • 车辆模板。
  • 可重用的游戏片段。

这些值得检查。打开它们,查看层级,检查组件,并查看哪些属性被公开。

生成的内容不仅可以使用。它还可以教你如何构建真实的 Cave 对象。

Entity Templates 的良好用例

当对象是时,创建模板:

  • 多次重复。
  • 跨多个场景使用。
  • 由多个组件构建。
  • 由多个子实体构建。
  • 意图保持一致性。
  • 作为可重用的游戏片段有用。

好的候选对象包括:

  • 敌人。
  • NPC。
  • 武器。
  • 子弹。
  • 可收集项。
  • 门。
  • 检查点。
  • 陷阱。
  • 级别传送门。
  • 车辆。
  • 可破坏的道具。
  • UI 小部件。
  • 可重用的关卡设计片段。

你重复使用某个对象的次数越多,模板的价值就越高。

何时不使用模板

并不是所有东西都需要成为模板。

在一个场景中只出现一次并且仅在一个场景中有意义的唯一对象可以保持为普通场景实体。

例如:

  • 一个一次性的电影道具。
  • 一个特定于级别的特殊触发器。
  • 一个永远不会被重用的独特装饰。
  • 一个临时测试对象。

模板很强大,但它们最有用的时机是当重用确实重要时。过早将每一个微小的对象转换为模板可能会使项目更难管理,而不是更容易。

一个简单的模板规则

如果你发现自己多次复制相同的实体设置,考虑将其制作成 Entity Template。

这个习惯可以节省大量时间,并使你的项目在增长时保持更清晰。