组件

组件 是一种特殊类型的对象,用作为 Actor 中的一个子对象。组件一般用于需要简单地切换的部件的地方,以便改变具有该组件的 Actor 的某个特定方面的行为或功能。比如,一辆汽车的控制机及运动和飞机是有很大差别的,而飞机的控制和运动又和船有很大区别,以此类推;然而,所有这些都是交通工具,它们存在一些共性。通过使用一个组件来处理这些控制及运动,可以很轻松地使得同一交通工具的行为变得像任何一种特定类型的交通工具。

在 Actor 中添加组件时,您就是在拼凑构成 Actor 的零碎部分,而该 Actor 将用于关卡 (s) 中。 例如,汽车上的车轮、方向盘以及车身和车灯等都可以看作组件,而汽车本身就是 Actor。

一旦添加了用于定义 Actor 的组件,请注意,即使不提供任何 Blueprint 脚本(或 C++ 代码)也可将 Actor 放置在关卡中,就像汽车一样(在真实世界中,汽车本身就是一个物体,无需驾驶员告诉汽车该做什么)。 由于“油门踏板”是一个组件,通过脚本或代码,您可表示已踩下了踏板,从而为汽车加速提供了逻辑。 可以此种方式访问每个组件(打开车灯、按喇叭、开启收音机、转动方向盘等)

Component Instancing (组件实例化)

与普通子对象的默认行为相反,创建为 Actor 内子对象的组件都进行了实例化,也就是说,特定类的每个 Actor 实例都获得了组件的独特实例。 要想有个形象一点的概念,您可以想象一下上文中提到的汽车的例子。汽车类可使用组件来表示汽车的车轮。 4 个车轮组件可以创建为类的默认属性中的子对象,并赋予“车轮”数组。在创建新的汽车实例时,将为该汽车专门创建车轮组件的新实例。 如果不是上述情况的话,当一辆车在游戏世界中移动时,所有汽车的车轮都是转动的;这明显不是我们想要的行为。默认的组件实例化简化了为 Actor 快速添加独特子对象的过程。

没有组件实例化,所有组件变量都需要使用 Instanced 属性说明符来声明。

Component Types (组件类型)

Actor 上可添加几种不同类型的组件,请参见以下链接以了解详细信息: