目录
任何能够放置到关卡的对象,即为Actor,如camera, Static Mesh, or player start;Actor支持3D变换(如translation, rotation, and scaling);他们可以被gameplay代码(C++或蓝图)创建和销毁;
- 在C++内,AActor是所有actor的基类;
为创建关卡,放置Actor到关卡,然后移动、缩放他们以创建环境,且添加脚本去创建他们的行为;
Placing Actors
Actor 是一种可以放置在 关卡(Level)中的对象,从创建游戏环境的Static Meshes,到sounds, cameras, player characters等等;
- 在关卡中放置Actor时,本质上是在创建一个基于该Actor的 实例(instance)对象;
- 在关卡中放置Actor时,还会自动将他们添加到 世界大纲视图(World Outliner)中;
使用放置Actor面板
- 搜索,使用 搜索(Search) 栏按名称查找Actor;
- 过滤,使用这些选项卡快速切换Actor类型;
- 资产视图,该视图显示选择搜索和筛选后的所有资产;
-
资产(Asset)是引擎项目中的任意一块内容,所有的Actor都是资产;
-
使用快捷菜单放置Actor
使用拖放放置Actor
从类查看器放置Actor
Selecting Actors
简单选择
选择Actor的最基本方法是在视口中 左键单击 它们;单击一个Actor将取消选择任何当前选中的Actor并选择新的Actor;
- 如在单击新的(未选择的)Actor时按住 Ctrl️ 键,则新的Actor将添加到选择中;
- 如在单击选中的Actor的同时按住 Ctrl️ 键,则将从选择中移除该Actor;
此方法适用于选择少量Actor或分散在一个关卡中的多个孤立Actor,但在选择大量Actor时,此方法可能会比较低效且枯燥;
当选择多个Actor时,可以将它们转换为一个组,在 细节(Details)面板中同时修改它们的属性;
在世界大纲视图中选择Actor
世界大纲视图(World Outliner)是虚幻编辑器中的一个面板,其中包含关卡中所有Actor的层级树状图;可以像在视口中一样,选择和取消选择列表中的单个Actor;
也可配合Ctrl或Shift,来选择;
区域选择(单击并拖动)
区域选择是一种快速方法,可在视口中的特定区域内选择或取消选择一组Actor;此类选择通过单击并拖动鼠标来执行,同时按住一个键或组合键(可选);根据在拖动鼠标时按住的键和鼠标按钮的组合,将选择或取消选择方框内的所有Actor;
透视图:
- Ctrl+Alt+左击框选;
侧视图:
- 左击并拖动,将当前选择替换为方框内包含的Actor;
- 左击并拖动 + Shift,将方框内包含的Actor添加到当前选择中;
- 左击并拖动 + Ctrl + Alt,从当前选择中移除方框内的Actor;
使用选择菜单
Transforming Actors
变换(Transforming)Actor是指对其进行移动、旋转或缩放(也就是,调整Actor的位置、方向和/或大小);有两种变换Actor的方法:
- 手动变换
- 交互式变换
手动变换
通过 Details 面板的"变换"(Transform)分段进行 手动变换;当在 Level Viewport 中选择一个或多个Actor时,可在此分段查看和编辑它们的 Location、Rotation 和 Scale;
每个 Transform 属性都提供了对应X、Y和Z轴的数字输入字段,可以直接输入特定值来调整选定的Actor,或者单击并上下拖动鼠标来调整该字段的数值;
如选择了多个Actor,并且它们的Location或Rotation有多个数值,则相关字段将显示 Multiple Values;在这种情况下,输入的数字将覆盖所有选定Actor的对应值;注意,这可能会导致Actor重叠;
可以通过单击 Lock Scale 按钮来锁定 Scale 字段,锁定后,每个轴(X、Y和Z)的数值会同步变化,从而实现等分缩放并防止失真;
Transform 属性默认 相对(relative) 坐标空间,意味着变换相对于Actor的父节点进行;通过属性旁边的下拉箭头,可在 相对(relative️) 和 世界(world️) 变换之间切换;世界(world️) 变换相对于世界坐标进行,而不是相对于Actor的父节点;
交互式变换
可以使用一种名为 gizmo️ 的可视化工具,直接在 关卡视口 内进行 交互式变换;gizmo有时也称为 控件(widget);
gizmo由几个部分组成,分别根据其作用的轴进行颜色编码:
- 红色代表X轴;
- 绿色代表Y轴;
- 蓝色代表Z轴;
根据正在执行的变换类型,gizmo会采用不同的形式:平移、旋转或缩放;可以通过以下方法选择要使用的小工具类型:
- 单击位于视口右上角的 关卡视口 工具栏中的图标;
- 使用键盘快捷方式;
选择一个或多个Actor后,可以通过在键盘按下 空格键 在不同类型的小工具之间切换;
平移(Translation)
由一组颜色编码的箭头组成,指向世界中每个轴的正方向;可用于沿轴、平面移动或自由移动Actor;
- 单击箭头并拖动箭头以沿该轴移动Actor;
- 单击两个轴相交点处的正方形并拖动,可沿两个轴(XY、XZ或YZ)定义的平面移动Actor;
- 单击并拖动所有三个轴相交处的白色球体,沿所有三个轴自由移动Actor;
- 还可以使用鼠标滚轮将Actor向近处或远处移动;
ALT + 单击并拖动平移的一个箭头,创建并移动所选Actor的副本;
旋转(Rotation)
由一组三个颜色编码的弧线组成,每个弧线与一个轴相关联;当拖动其中一条弧线时,选定的Actor将围绕该轴旋转;对于这个小工具,任一弧线所影响的轴是垂直于弧线的轴;
当将光标悬停在特定弧线上时,该弧线会变为黄色,表示可以拖动它来旋转Actor;当开始旋转Actor时,小工具会改变形状,仅显示Actor的旋转轴;旋转量也会实时显示,以帮助把控进度;
缩放(Scale)
带有末端为立方体的手柄;当通过其中一个手柄拖动小工具时,可沿关联的轴缩放Actor;手柄按轴进行颜色编码,类似于 平移(Translation)和 旋转(Rotation)小工具;
可以同时沿两个轴缩放Actor,类似于使用 平移(Translation)小工具沿由两个轴定义的平面移动Actor;每两个轴通过一条线连接,形成一个三角形。这些三角形分别对应三个平面之一(XY、XZ、YZ);拖动其中一个三角形即可沿定义该平面的两个轴缩放Actor;当鼠标悬停在其中一个三角形上时,相应手柄变为黄色;
还可以沿所有三个轴缩放Actor,从而保持其原始比例;如果将光标悬停在所有三个轴相交的立方体上,三个手柄都变为黄色;拖动该中心立方体即可按比例缩放Actor;
世界和局部变换模式
使用交互式变换方法时,可以选择执行变换时所使用的参考坐标系;意味着可以按以下方式变换Actor:
- 世界空间,也就是沿世界轴;
- Actor的局部空间,也就是沿其局部轴;
默认,虚幻编辑器的启动模式为世界变换模式;要切换到局部变换模式,请单击 关卡视口 工具栏中的 地球 图标;地球变成一个立方体图标,表示现在处于局部变换模式;单击立方体可切换回世界坐标;
调整Actor的枢轴点
变换Actor时,通常会从Actor的基础枢轴点执行变换;如果启用了变换小工具,则会在该小工具的三个轴相交处看到 枢轴点 ;
临时调整Actor枢轴点的位置:
- 鼠标中键单击 变换 小工具的中心处的球体并拖动,即可移动枢轴点;然后,可以围绕新的枢轴点变换对象;
- 取消选择该Actor后,枢轴点会立即跳回原位;
永久更改枢轴点的位置:
- 鼠标中键单击 变换 小工具的中心处的球体并拖动,即可移动枢轴点;
- 右击该静态网格体,选择 枢轴点(Pivot)> 设置为枢轴点偏移(Set as Pivot Offset);
- 将枢轴点重置为其默认位置,选择 枢轴点(Pivot)> 重置枢轴点偏移(Reset Pivot Offset);
键盘快捷方式
功能按钮 | 工具或操作 |
W | 移动 |
E | 旋转 |
R | 缩放 |
V(使用平移小工具时按住) | 切换顶点对齐 |
左击并拖动(在变换小工具上) | 移动、旋转或缩放选定的Actor,具体取决于当前活动的变换小工具; |
中击并拖动(在枢轴点上) | 移动选定Actor的枢轴点 |
Ctrl + W(在Actor上) | 将选定的Actor复制到原始Actor所在的相同坐标处 |
Alt + 左击并拖动(在平移小工具上) | 复制并移动选定的Actor |
H(在Actor上) | 隐藏选定的Actor |
Ctrl + H | 显示所有隐藏的Actor |
Shift + E(在Actor上) | 选择关卡中与所选Actor类型相同的所有匹配Actor |
Ctrl + 左击(在Actor上) | 将该Actor添加到当前Actor选择中 |
Actor Snapping
可以利用 对齐(Snapping)功能轻松定位Actor,将其与网格或其他对象对齐;启用对齐后,Actor将在变换后跳至固定位置;
虚幻引擎 有多种不同实现对齐的方式:
- 表面对齐
- 网格对齐
- 顶点对齐
表面对齐
表面对齐 使Actor对齐到地面或其他表面;
选择Actor并按 End 键,该Actor会对齐到最接近的表面;
网格对齐
网格对齐 时,Actor将按特定值的增量移动、旋转或缩放;
- 拖动网格(Drag Grid) 允许对齐到关卡中的三维隐式网格;
- 旋转网格(Rotation Grid) 可用于进行增量旋转对齐;
- 缩放网格(Scale Grid) 会强制"缩放"控件对齐到累加增量,但可以在"编辑器偏好设置"中设置为百分比值;
顶点对齐
可以使用 顶点对齐 功能将一个对象对齐到另一个对象,方法是使用其各自网格体的多边形顶点;顶点是两条或多条边相交处的点;
要使用顶点对齐,请在按住 V 键的同时使用平移控件;按住 V 键的同时,只要开始移动对象,就会看到该对象可以对齐到的多边形顶点;此功能在与枢轴点调整一起使用时尤其有用:可以将枢轴点直接对齐到顶点,然后用此方法将该对象对齐到另一个对象上的顶点;
Actor Mobility
移动性(Mobility)可控制Actor在Gameplay期间是否能够以某种方式移动或变化;此设置主要适用于Static Mesh Actor和Light Actor;它位于Actor的 细节(Details)面板中Actor的变换坐标下;
Static Actors
静态(Static)移动性在Gameplay期间根本不会移动或更新;
静态网格体(Static Mesh)Actor设置为静态,其阴影将生成预计算光照贴图(使用Lightmass生成和处理它们);在Gameplay期间永不需要重新定位的结构性或装饰性网格的理想之选;然而,要注意其材质仍可动画化;
光源(Light)Actor设置为静态,将使用Lightmass帮助生成预计算光照贴图;会照亮Static和Stationary Actor的关卡;对于可移动Actor,它们使用间接光照方法,如Volumetric Lightmaps;
Stationary Actors
固定(Stationary)移动性在Gameplay期间可以变化但不移动的Actor;
静态网格体(Static Mesh)Actor设置为固定,则可以变化,但无法移动;不会使用Lightmass帮助生成预计算光照贴图,照亮方式和光源(静态或固定)照亮可移动Actor一样。但由可移动光源照亮时,将使用缓存阴影贴图,在光源不移动时复用于下一帧,这可以提高使用动态光照的项目的性能;
光源(Light)Actor设置为固定,则可以在Gameplay期间以某种方式更改,例如更改其颜色或强度,变得更亮或更暗,甚至完全没有亮度;固定光源仍会使用Lightmass帮助生成预计算光照贴图,而且还可以为移动中的对象投射动态阴影;
如影响相同Actor的固定光源太多,可能会对性能产生显著影响;
Movable Actors
可移动(Movable)移动性在Gameplay期间需要以某种方式添加、删除或变化的Actor;这包括移动、缩放、与其他Actor交换,等等;
静态网格体(Static Mesh)Actor设置为可移动,则将投射完全动态的阴影,这些阴影不会生成光照贴图中存储的预计算光照;可移动静态网格体Actor与光源交互的方式取决于光源类型:
- 可移动(Movable) 光源:Actor仅投射动态阴影;
- 固定(Stationary) 光源:Actor组合使用动态阴影和预计算光照数据,例如体积光照贴图;
- 静态(Static) 光源:Actor仅由预计算光照数据照亮,不会投射动态阴影;
光源(Light)Actor设置为可移动,则只能投射动态阴影;除了能够在Gameplay期间移动光源外,还可以在运行时更改其颜色和强度,并相应更新场景;但是,务必谨慎使这些光源投射动态阴影,因为其阴影投射方法的性能占用程度最高;
可移动光源还支持Lumen,这是一种动态全局光照和反射系统;
由于虚幻引擎的延迟渲染系统,不投射阴影的可移动光源不会为场景渲染增加开销;
Grouping Actors
将Actor打组,可以同时管理多个Actor;利用Actor组,可以执行以下操作:
- 将分成一组的Actor作为一个整体变换,比如旋转、平移、缩放;多个Actor属于一个组时,单个Actor变换将锁定;
- 临时解锁一个组,变换单个Actor,然后重新锁定该组以冻结组中的各个Actor,防止对单个Actor的变换进行更改;
- 在组中添加和删除Actor;
一个Actor一次只能属于一个组;
要将多个Actor分成一组,需要首先确保启用了 允许组选择(Allow Group Selection);还可以使用 Ctrl + Shift + G 键盘快捷方式切换此选项;
Actor打组
快捷键:Ctrl + G
处于不同关卡中的Actor不能打组,将当前位于组中的Actor从一个关卡移到另一个关卡,就会将其从现有组中删除;但是,可以在不同关卡之间移动整个组;
打组后,会在 World Outliner 中创建 Group Actor;
处理Actor组
Regrouping,重新分组会从全部现有组中删除所有选定的Actor,然后将所有选定的Actor创建成一个新组;使用此选项可将所有选择快速创建成一个新组,而无需手动解散其他组;
- 选择中包含至少一个组和其他未分组的Actor时即会出现此选项;
- 快捷键:Ctrl + G;
Ungrouping,从所选组中删除所有Actor,然后删除这些组;
- 快捷键:Shift + G;
Lock/Unlock Group
- 默认情况下,新创建的组处于 已锁定(locked)状态;
- 如选择锁定组中的Actor,将选择整个组;
- 变换会影响组中的所有Actor;
- 如某个组 未锁定(unlocked)状态,可执行以下操作:
- 选择和变换属于该组的单个Actor;
- 从该组中删除Actor;
Adding/Removing Actors
仅在选择一个组和其他未分组的Actor之后,会提供 添加到组(Add to Group)选项;此选项会将未分组的Actor添加到现有组;
仅在选择未锁定组中的一个或多个Actor之后,系统才会提供 从组中删除(Remove from Group)选项;此选项将从组中删除所选的Actor;如果一个嵌套组从更大的组中删除,它本身仍是一个组
如一个组不包含Actor,将会自动删除,并且其组Actor会从 World Outliner 中删除;
Transforming Actors/Actor Groups
Actor组的 枢轴点 会自动设置为该组的中心点;锁定该组时,只能绕该组的枢轴点变换该组内的 全部 Actor;要将单个Actor绕其自己的枢轴点变换,必须首先解锁该组;
要设置Actor组的枢轴点,请选择该组:
- Alt + 中键点击 ;
- 中键点击并拖动 ;
Merging Actors
在 虚幻引擎 中,可通过 Actor merging 操作将两个或更多 静态网格体Actor 结合为新的单个Actor;这样可以减少绘制调用,有助于项目优化;
Merge
- 会合并全部选中的静态网格体Actor,为每个材质创建一个网格体分段。可以指定要使用的 LOD 级别;
- 绘制调用数量等于 材质 数量。这种方式保留UV;
- 也可以选择合并全部材质,这将为整个网格体烘焙单一材质;其结果是单一分段和单一绘制调用,但 不 保留UV;将针对每一分段进行遮挡剔除;
Simplify
- 将全部选中的静态网格体Actor合并成一个单一网格体,它被称为 代理网格体(Proxy Mesh)。它使用选定每个网格体的最少细节LOD,并根据设置简化网格体形状。顶点数量也会减少;
- 其结果是单一绘制调用;它为整个网格体烘焙单一材质,且 不 保留UV;将针对整个网格体进行遮挡剔除;
Batch
- 将基于相同的静态网格体组件创建实例化静态网格体组件;它保留UV,且不影响遮挡剔除;
Approximate
- 与"简化(Simplify)"合并方式相似;两者区别在于"近似(Approximate)"可以处理更复杂的源网格体(如Nanite网格体),而"简化(Simplify)"在简化或纹理烘焙步骤中都会失败;