Skip to content

EffectBindData ​

概览 ​

字段值
KindData · 数据 Data
Realmcommon

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类型默认值说明
BindUnitIdInt-1特效绑定的目标单位的唯一标识符。
BindSocketString""特效绑定的目标单位上的挂接点名称,例如 "Head"、"Spine" 等。
BindOffsetVector3[0, 0, 0]BindOffset 是 EffectBindData 上的绑定位置偏移属性,类型为 Vector3,用于描述特效在绑定目标之上的位置偏移量。它与 BindUnitId、BindSocket、BindType 一起构成完整的特效绑定信息。
BindTypeEffectBindTypeEnums.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)