Unity的账户系统就是一坨大便。

修改 KeyFrame 时

    AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, curveBinding)
    ...
    ModifyKey(curve)
    ...    

当你通过一个函数调用来修改某个条 曲线( AnimationCurve ) 某个关键帧 ( KeyFrame ) 时。

private void ModifyKey(AnimationCurve curve)
{
    KeyFrame[] keys = curve.keys;
    for (int i = 0;i < keys;i++)
    {
        KeyFrame key = keys[i]
        if (IsThatKey(key))
        {
            key.value = modify;
            // 😄注意😄
            //    KeyFrame 是 Struct,因此如下行这样赋值
            keys[i] = key;
            break;
        }
    }
    // 😄注意😄 
    //     AnimationCurve 的 keys 是一个属性,而不是成员
    //    在此处赋值才能修改成功
    curve.keys = keys;
}

保存资源时

如果你使用 AssetDatabase.CreateAsset(anim, animPath); 来保持资源的话。
要注意 CreateAssetanimPath 对应的路径上已经存在文件时,不会更新资源!你需要

  • DeleteAsset 对应文件。
  • 判断是否存在,然后给 animPath 添加序号(or其它)后缀。

RDDcoding
151 声望17 粉丝

一心一行