主题
组件
组件(Unit)是 SE 编辑器中场景的基本单位。本节介绍组件的创建、移动、旋转、缩放、多选复制、组合绑定等操作,以及组件的物理状态、运行测试等基础概念。
创建组件
在编辑器界面上找到创建面板,选择【结构】-【基础形状】,然后分别选中方块和球体,并放在视窗内合适位置。

移动、旋转、缩放
选中组件后,可在【视窗】左上方点击对应指示器图标进入移动 / 旋转 / 缩放模式,或使用快捷键 1 / 2 / 3 快速切换。连续按同一个快捷键还可在该动作的子模式之间循环切换(例如连按 1 切换移动指示器的局部空间 / 世界空间)。指示器的默认快捷键可在【设置】-【快捷键】中自定义。
移动(快捷键 1)
进入移动模式后,组件上会出现 X / Y / Z 三轴指示器。沿对应轴拖动可在单个坐标轴上移动组件。键盘方向键也可直接微调位置。

也可以通过键盘快捷键直接控制移动。

移动指示器有两种坐标空间:
| 空间 | 说明 |
|---|---|
| 局部空间 | 沿组件自身朝向建立坐标系,移动方向随组件旋转变化(前后左右) |
| 世界空间 | 沿场景原点建立坐标系,移动方向恒定(东南西北) |
连按 1 可在两种空间之间切换。
旋转(快捷键 2)
进入旋转模式后,组件上会出现 X / Y / Z 三轴旋转弧。沿对应弧拖动旋转组件,一次只能改变一个轴的旋转角度。

使用快捷键 Ctrl+2 可在三种旋转辅助模式之间切换:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 90° 旋转 | 仅按 90° 倍数旋转 | 快速转向 |
| 15° 旋转 | 仅按 15° 倍数旋转 | 小幅度调节 |
| 自由旋转 | 任意角度,最小 1° | 精确旋转 |
更多旋转角度配置见【设置】-【通用设置】-【高级设置】-【旋转辅助】。
旋转还有三种坐标空间,连按 2 可在局部旋转 / 世界旋转 / 自由旋转之间切换:
| 空间 | 说明 |
|---|---|
| 局部旋转 | 沿组件自身朝向建立坐标系,随组件旋转变化(前后左右) |
| 世界旋转 | 沿场景原点建立坐标系,方向恒定(东南西北) |
| 自由旋转 | 不限制坐标轴,可任意角度旋转 |
缩放(快捷键 3)
进入缩放模式后,组件上会出现 X / Y / Z 三轴方头指示器。沿对应轴拖动单轴缩放,长按指示器中心向任意方向拖拉则整体缩放。

连按 3 可在两种缩放模式之间切换:
| 模式 | 说明 |
|---|---|
| 缩放移动伸展 | 只向单侧伸展 |
| 缩放但不移动 | 组件整体伸展 |

缩放是按原尺寸的倍数计算的,组件的真实大小需要以【尺寸】为准。
精准位置
在【属性面板】-【基础】中可以直接编辑组件的位置、世界坐标、旋转、缩放、尺寸数值。

多选与复制
多选(快捷键 Ctrl)
点击多选图标进入多选模式,再依次选中多个组件;或长按 Ctrl 选中多个组件。

复制(快捷键 Alt)
点击复制图标后,选中组件并使用移动指示器向任意方向移动即可完成复制;或长按 Alt + 拖动组件实现快速复制。

对齐
选中多个组件后,左上方会出现对齐按钮。点击后选择对齐方式和对齐轴,确认后完成组件对齐。

组合与绑定
组合
多选组件后,点击图示红框内的【组合】按钮即可将组件合成组件组。对已存在的组合再次点击【组合】按钮,将自动拆散组合。

绑定
点击需要被绑定的子组件,再点击图示红框内的【绑定】按钮,即可选择需要绑定的父组件。已有绑定关系的组件,再次点击【绑定】按钮将自动解绑。

物理状态
组件支持以下三种物理状态:
| 状态 | 说明 |
|---|---|
| 静态物体 | 不受任何物理影响,但可以反作用到其他物体,一般用于游戏中不会有任何变化的物体 |
| 运动物体 | 不受任何物理影响,但可以反作用到其他物体,同时可以通过运动器或者代码进行位置变化 |
| 受力物体 | 参与各种物理作用的物体 |
新创建的组件默认为静态物体。
API 参考:BodyType
WARNING
同一场景内不宜有太多受力物体,会增加服务端的物理计算压力,造成掉帧等情况。

运行与测试
点击左上角【运行】开始进入游戏运行状态。

点击左上角【退出试玩】即可退出运行状态。
子组件
子组件是 SE 的核心组织方式。运动表现、视觉表现、玩法逻辑、交互行为,都通过给组件挂子组件实现。
在哪里挂子组件
在场景管理中选中目标组件,右键打开组件菜单,选择<添加子组件>

接下来选择子组件的类型,不同子组件能够给组件添加不同的功能。

挂接关系的限制
不是所有子组件都能挂在所有父组件下。挂接关系由编辑器内置的子组件限制规则决定,每条限制由四个字段组成:
| 字段 | 说明 |
|---|---|
| 类型 | 子组件本身的类型 |
| 可使用范围 | 允许作为父节点的组件类型,多个用 , 分隔 |
| 同级个数 | 同一父节点下允许挂接的最大个数,-1 表示不限 |
| 主动添加 | 1 允许在编辑器【+】菜单中手动添加;0 仅由系统自动创建 |
编辑器中的体现:
- 当前父节点不在某子组件类型的【可使用范围】内 → 该类型不出现在【+】菜单。
- 当前父节点已挂满【同级个数】上限 → 该类型在【+】菜单中置灰。
- 【主动添加 = 0】的类型 → 永远不出现在【+】菜单。
子组件限制表
下表为当前所有子组件类型的挂接限制:
| 子组件类型 | 可挂在哪些父节点下 | 同级上限 | 主动添加 |
|---|---|---|---|
| WorldUnit | WorldUnit, GroupUnit, EggyUnit | 不限 | 是 |
| Script | Unit | 不限 | 是 |
| TriggerUnit | WorldUnit, GroupUnit, EggyUnit | 不限 | 是 |
| EffectUnit | WorldUnit, GroupUnit, EggyUnit | 不限 | 是 |
| MaterialExpression | WorldUnit | 1 | 否(系统自动) |
| LightUnit | WorldUnit, GroupUnit | 不限 | 是 |
| DestroyVolumeComp | RenderTriggerUnit | 1 | 是 |
| RenderUnit | SpaceUnit, EggyUnit | 不限 | 是 |
| AbilityManager | EggyUnit, Equipment | 1 | 是 |
| EggyUnit | SpaceUnit | 不限 | 是 |
| AttrUnit | Unit | 1 | 是 |
| Ability | AbilityManager | 不限 | 是 |
| Backpack | Unit | 1 | 是 |
| Modifier | Unit | 1 | 是 |
| OgcModifier | Unit | 1 | 是 |
| AttrBuffUnit | Unit | 1 | 是 |
| Equipment | Backpack | 不限 | 是 |
| HumanController | HumanUnit | 1 | 是 |
| EggyController | EggyUnit, PetUnit | 1 | 是 |
| HumanUnit | SpaceUnit | 不限 | 是 |
| Animator | HumanUnit | 1 | 是 |
| Animation | Animator | 不限 | 是 |
| SkinUnit | WorldUnit, RenderUnit | 不限 | 是 |
| Animate | EggyUnit, HumanUnit | 1 | 是 |
| EcaPathUnit | WorldUnit, TriggerUnit, GroupUnit, RenderTriggerUnit | 不限 | 是 |
| BaseMotorUnit | WorldUnit | 不限 | 是 |
| GroupUnit | Unit | 不限 | 是 |
| Attachment | WorldUnit, Attachment | 不限 | 是 |
| PathfindingModifier | PathfindingModifier | 1 | 是 |
| ClickDetector | WorldUnit | 1 | 是 |
| LocalScript | Unit | 1 | 是 |
| SoundGroup | SoundService | 不限 | 是 |
| SoundUnit | SoundGroup, SoundService | 不限 | 是 |
其他 Unit
方块和球体在 LUA SDK 定义中属于 WorldUnit,都继承自 Unit。Unit 是场景中所有游戏对象的基础类型。
API 参考:Unit
