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 的类似 prefab 的工作流程。如果你是游戏引擎新手,可以把它们看作可重用的对象配方

你不必每次都重新构建相同的门、敌人、拾取物或 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

模板资产与模板实例

区分模板资产和放置的实例非常重要。

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

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

实例是该结构在特定场景中的表现。

编辑 Entity Template

模板作为独立资产进行编辑。

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

关键点是:

> 模板拥有其内部层级结构。

场景实例使用该层级,但不直接拥有其内部每个子实体。这保证所有实例都连接到相同的可重用设置。

值得一提的是,游戏开始时上述限制解除,模板的所有层级立即可供自定义。因此在游戏逻辑编程时,能直接操作实体模板实例及其子实体。

例如,如果你打开一个 Enemy 模板并添加一个新的 Health Bar 子实体,所有该敌人模板的实例都将使用更新后的结构。

为什么模板的子实体不能在场景中直接编辑

当模板实例被放置在场景中时,内部子实体仍属于模板。因此 Cave 保护模板子实体免受直接场景编辑。

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

Enemy
  Body Mesh
  Detection Area
  Health Bar

你应该在模板内部编辑这些子实体,而非作为独立的场景实体。

这保持了所有实例的一致性。如果每个放置的敌人都能自由编辑其内部子实体,模板就无法作为可靠的可复用对象。

在场景中实例化模板

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

例如,你可以从资源浏览器将模板拖动到 3D 视图

放置后:

  • 它会作为模板实例出现在场景图中。
  • Cave 用不同的模板颜色(绿色)显示该实例。
  • 实例保持与模板资产的关联。

image.png

从工作流程角度看,这是最快构建关卡的方法之一。你创建一个可复用的门、拾取物、敌人或道具,然后根据关卡需求放置实例。

本地模板自定义

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

image.png

主要方法是通过根模板实体暴露的属性进行。

这提供了一个有效的平衡:

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

例如,多个敌人可以使用同一敌人模板,但每个实例的生命值、速度、巡逻设置或行为选项不同。

本地模板属性示例

常见有用的本地属性包括:

属性 示例用途
敌人生命值 使某个敌人更弱或更强
敌人速度 创建慢速和快速变体
伤害数值 以不同危险级别复用同一危害设置
传送门目标关卡 每个传送门跳转不同场景
拾取物价值 让金币、宝石或奖励值不同
门的锁定状态 同一门设置用于锁门和开门
UI 文字 复用 UI 小部件显示不同标签

例如,一个 Portal 模板可以在多个位置使用,只要每个放置的传送门拥有选择目标场景的本地属性。

初始项目的模板示例

根据你选择的项目选项,初始项目可能包含若干有用的模板。

你可能会看到:

  • 玩家模板
  • 敌人模板
  • 伤害模板
  • 传送门模板
  • 车辆模板
  • 可复用的游戏组件

值得打开这些模板,查看层级结构,检查组件和暴露的属性。

生成的内容不仅供使用,也教你如何构建实际的 Cave 对象。

Entity Templates 的良好使用场景

当对象:

  • 被多次重复使用
  • 跨多个场景使用
  • 由多个组件构成
  • 由多个子实体组成
  • 需要保持一致行为
  • 作为可复用游戏玩法组件有用

时,创建模板是合适的。

适合的示例包括:

  • 敌人
  • NPC
  • 武器
  • 子弹
  • 收集物
  • 检查点
  • 陷阱
  • 关卡传送门
  • 车辆
  • 可破坏道具
  • UI 小组件
  • 可复用的关卡设计组件

你复用对象越多,模板的价值就越大。

什么时候不该用模板

并非所有对象都需要模板。

只在一个场景中出现一次且只在该场景有意义的独特对象,可以保留为普通场景实体。

例如:

  • 一次性剧情道具
  • 特定关卡触发器
  • 永不复用的独特装饰
  • 临时测试对象

模板功能强大,但在实际复用时最有价值。过早地将每个小对象都做成模板,反而会让项目难以管理。

简单的模板规则

如果你发现自己复制相同实体设置超过一次,请考虑制作成 Entity Template。

这个习惯能节省大量时间,并且随着项目增长,让项目保持整洁。