UnityAction<T>(将方法作为参数传递), Lambda 表达式定义匿名函数,

1.UnityAction<string> onValueChanged 是一个委托类型的参数,用来接收一个方法,并且这个方法必须接受一个 string 类型的参数并且没有返回值。在这个方法中,该参数用于接收一个回调函数,这个回调函数的功能是在增加或减少数值后执行一些操作,例如更新其他UI元素或执行其他逻辑。

public GameObject AddStepperWidget(string name, float min, float max, float step,
    float defaultValue, UnityAction<string> onValueChanged)
{......}

UnityAction<T> 是 Unity 引擎中的委托类型,它允许你将方法作为参数传递,并且可以定义参数类型。在这种情况下,UnityAction<string> 表示接受一个 string 类型的参数的方法。

2.Lambda 表达式定义匿名函数或委托

 btn_add.onClick.AddListener(() =>
 {
     var now = GetStepperValue(effect);
     var next = Mathf.Clamp(float.Parse(now) + step, min, max);
     effect.GetComponentsInChildren<Text>()[1].text = next.ToString();
     onValueChanged(next.ToString());
 });

这种写法使用了 Lambda 表达式,它是一种简洁的写法,用于定义匿名函数或委托。

Lambda 表达式通常用于在需要传递函数作为参数的地方,以提供更简洁的语法。

在这个例子中,btn_add.onClick.AddListener() 方法需要传递一个委托作为参数,用于监听按钮点击事件。

Lambda 表达式 () => { ... } 定义了一个匿名函数,这个函数包含了按钮点击时要执行的代码块。这样就避免了显式地定义一个具名方法,而是直接将方法的内容放在了 AddListener() 方法的括号内。

Lambda 表达式的形式是 () => { ... },其中 () 用于传递参数(如果有的话),=> 表示“变成”,后面的 { ... } 是匿名函数体,包含了要执行的代码。

btn_add.onClick.AddListener 中,Lambda 表达式内的 onValueChanged(next.ToString()) 是一个方法调用。这里将 next.ToString() 作为参数传递给 onValueChanged 方法。

通常情况下,onValueChanged 方法用于在 UI 元素的值发生变化时触发某些操作。在这个 Lambda 表达式中,它的作用是在点击 “增加” 按钮后,将新的数值传递给一个回调函数,以便在数值发生改变时执行一些特定的操作。

onValueChanged 是一个委托类型的参数,在传递给 AddStepperWidget 方法时,它的类型是 UnityAction<string>,表示它是一个接受一个 string 类型参数的委托。

因此,Lambda 表达式中的 onValueChanged(next.ToString()) 实际上是调用了这个委托,并将 next.ToString() 作为参数传递给了这个委托。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值