我有以下脚本:
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")));
我试过自己,但只是犯了一堆错误。
答案 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);