使用蓝图组件
蓝图组件 blueprint component为啥不能set actor location
组件不是 Actor,没有 “自身位置” 的概念组件(如 Scene Component、Mesh Component 等)是依附于 Actor 存在的 “附属物”,它本身不是独立的 Actor,因此没有 “世界空间位置”(World Location)的属性,只有 “相对位置”(Relative Location)—— 即相对于其所属 Actor(或父组件)的位置。而
Set Actor Location是Actor 类的函数,作用是移动整个 Actor(包括其所有组件),组件本身并不具备这个函数。
如何间接实现类似需求?
如果需要通过组件来移动其所属的 Actor,可以分两步:
- 在组件中通过
Get Owner节点获取它所依附的 Actor(返回值是一个 Actor 对象); - 对获取到的 Actor 调用
Set Actor Location,即可移动整个 Actor(包括该组件)。
那添加了蓝图组件的actor能继承它暴露的变量么?
举例说明:
假设你有一个蓝图组件 BP_MyComponent,其中暴露了一个公开变量 MyValue(整数)。当 Actor BP_MyActor 添加了这个组件后:
- 错误方式:在
BP_MyActor中直接拖拽MyValue变量使用(无法直接访问,因为变量属于组件,而非 Actor)。 - 正确方式:
- 在
BP_MyActor的蓝图中,添加Get BP_MyComponent节点(获取组件实例); - 从该组件节点的输出引脚中,找到
MyValue变量,直接连接使用(或通过 “获取 MyValue” 节点访问)。
- 在
