可以使用lambda函数缩短此语句吗?

时间:2018-05-02 20:12:55

标签: unity3d

我有以下脚本:

using UnityEngine;

public class IdleBehavior : StateMachineBehaviour
{
    public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.SetFloat("Counter", Increment(animator.GetFloat("Counter")));
    }

    private float Increment(float time)
    {
        return time += Time.deltaTime;
    }
}

...并且只是想知道是否可以使用lambda表达式缩短以下行?

animator.SetFloat("Counter", Increment(animator.GetFloat("Counter"))); 

我试过自己,但只是犯了一堆错误。

1 个答案:

答案 0 :(得分:3)

你真的不需要lambda表达式,只需在参数本身中执行加法:

animator.SetFloat("Counter", animator.GetFloat("Counter") + Time.deltaTime);

但是,如果要使用lambda表达式为animator参数添加值,可以按如下方式执行:

Action<string,float> addFloatToAnimatorParameter =
    (str, value) => animator.SetFloat(str, animator.GetFloat(str) + value));
addFloatToAnimatorParameter("ParameterName", Time.deltaTime);