主题
EffectBindData
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | common |
EffectBindData 用于描述 EffectUnit 与目标单位的绑定方式,包括宿主提供的目标单位 ID、挂点、偏移和跟随类型。
适用场景
当宿主系统或编辑器流程已经提供目标单位的公开数值 ID 时,构造绑定数据并赋给 EffectUnit.EffectBindData。
使用要点
调用 EffectBindData.New() 创建实例,写入宿主提供的 BindUnitId、BindSocket、BindOffset 与命名枚举 BindType,再赋给 EffectUnit.EffectBindData。
注意事项
BindUnitId 必须使用宿主系统或编辑器流程提供的目标单位数值 ID;BindSocket 必须与目标资源的真实挂点匹配。
代码示例
使用宿主提供的目标 ID 配置特效绑定
lua
-- @runtime client
local function configureEffectBinding(effect, targetUnitId)
if effect == nil or not effect:IsA("EffectUnit") or targetUnitId == nil then
return
end
local bindData = EffectBindData.New()
bindData.BindUnitId = targetUnitId -- 由宿主系统或编辑器流程提供
bindData.BindSocket = "Origin"
bindData.BindOffset = Vector3.New(0, 2, 0)
bindData.BindType = Enums.EffectBindType.ALL
effect.EffectBindData = bindData
end属性 (4)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
BindUnitId | Int | -1 | 特效绑定的目标单位的唯一标识符。 |
BindSocket | String | "" | 特效绑定的目标单位上的挂接点名称,例如 "Head"、"Spine" 等。 |
BindOffset | Vector3 | [0, 0, 0] | BindOffset 是 EffectBindData 上的绑定位置偏移属性,类型为 Vector3,用于描述特效在绑定目标之上的位置偏移量。它与 BindUnitId、BindSocket、BindType 一起构成完整的特效绑定信息。 |
BindType | EffectBindType | Enums.EffectBindType.ALL | 特效与目标单位的绑定方式,决定特效跟随目标的位置、旋转或缩放。 |
关联类型
函数 (1)
New
签名:New() -> EffectBindData
EffectBindData 的构造方法,用于创建一个特效绑定数据实例。该实例用于描述特效与目标之间的绑定关系,实例上公开 BindUnitId(绑定对象标识)、BindSocket(绑定插槽)、BindOffset(绑定偏移)与 BindType(绑定类型)等属性,可在创建后按需配置。
返回值 EffectBindData
示例代码
构造 EffectBindData 并配置与读取绑定属性
lua
-- @runtime client
-- EffectBindData 描述特效挂接到目标单位的方式,可直接构造后再配置各项绑定属性
local posBind = EffectBindData.New()
local fullBind = EffectBindData.New()
-- BindType 决定绑定方式:仅位置 / 位置+旋转 / 位置+缩放 / 全部
posBind.BindType = Enums.EffectBindType.POS
fullBind.BindType = Enums.EffectBindType.ALL
-- BindSocket 需与目标资源上的真实挂点名称保持一致,这里统一挂到 root 挂点
posBind.BindSocket = "root"
fullBind.BindSocket = "root"
-- 分别读取两份绑定数据的属性,确认构造结果与赋值生效情况
print("posBind.BindType =", posBind.BindType)
print("fullBind.BindType =", fullBind.BindType)
print("posBind.BindSocket =", posBind.BindSocket)
print("posBind.BindOffset =", posBind.BindOffset)
print("fullBind.BindUnitId =", fullBind.BindUnitId)