1 通过lambda表达式,模拟创建一个按钮时,参数有一个点击按钮事件的方法。
2 通过lambda表达式,通过图片的路径,显示这张图。

//Unity-lambda表达式
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;//通过lambda表达式,模拟创建一个按钮时,参数有一个点击按钮事件的方法。
//通过lambda表达式,通过图片的路径,显示这张图。public class Demo : MonoBehaviour
{Action buttonClick;Action<int, string> buttonClick2;Func<int, string, double> buttonClick3;public Image myImage;void Start(){//委托的标准写法CreateButton(buttonClick += ButtonClickMethod);//lambda表达式写法CreateButton(()=>{Debug.Log("按钮点击事件");});//委托的标准写法CreateButton2(buttonClick2 += ButtonClickMethod2);//lambda表达式写法CreateButton2((int intData, string strData) =>{Debug.Log($"按钮点击事件{intData}, {strData}");});//lambda表达式简化写法CreateButton2((intData, strData) =>{Debug.Log($"按钮点击事件{intData}, {strData}");});//委托的标准写法double myData = CreateButton3(buttonClick3 += ButtonClickMethod3);Debug.Log($"myData = {myData}");//lambda表达式写法会报错,lambda表达式写法,作为参数的方法不能有返回值//CreateButton3((intData, strData) =>//{//    Debug.Log($"按钮点击事件{intData}, {strData}");//});//一般lambda表达式带参数意义不是很大,如果需要带参数,如下的实例比较好。//比较有意义的带参数的使用的lambda表达式//拿到图片的路径,转换为Texure,然后把Texure转换为Image的sprite,Image显示出来//路径为:Assets/StreamingAssets/a.pngStartCoroutine(GetLocalTexture(StreamingAssetsPath("a.png"), (texture) =>{//图片资源, new Vector4(40, 40, 40, 42))表示图片在slice模式下切四个角的大小。Sprite spriteFromWeb =Sprite.Create(texture,new Rect(0, 0, texture.width, texture.height),new Vector2(0, 0),100,0,SpriteMeshType.Tight,new Vector4(40, 40, 40, 42));myImage.sprite = spriteFromWeb;}));}public void CreateButton(Action myButtonClick){myButtonClick();}public void ButtonClickMethod(){Debug.Log("按钮点击事件");}public void CreateButton2(Action<int, string> myButtonClick2){myButtonClick2(5, "100");}public void ButtonClickMethod2(int intData, string strData){Debug.Log($"按钮点击事件{intData}, {strData}");}public double CreateButton3(Func<int, string, double> myButtonClick3){return myButtonClick3(5, "100");}public double ButtonClickMethod3(int intData, string strData){Debug.Log($"按钮点击事件{intData}, {strData}");return Convert.ToDouble(intData) + Convert.ToDouble(strData);}IEnumerator GetLocalTexture(string url, Action<Texture2D> actionResult){UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(url);yield return uwr.SendWebRequest();Texture2D myTexture = null;if (uwr.isNetworkError || uwr.isHttpError){Debug.Log($"GetLocalTexture www.error = {uwr.error}");}else{myTexture = ((DownloadHandlerTexture)uwr.downloadHandler).texture;}if (actionResult != null){if (myTexture != null){actionResult(myTexture);}}}public string StreamingAssetsPath(string pathName){string path = "";if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.IPhonePlayer){path = "file://" + Application.streamingAssetsPath + "/" + pathName;}else if (Application.platform == RuntimePlatform.Android){path = Application.streamingAssetsPath + "/" + pathName;}return path;}}

Unity-lambda表达式相关推荐

  1. Lambda 表达式基础理论与示例

    Lambda 表达式基础理论与示例 Lambda 表达式,也可称为闭包,推动 Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). 使用 Lam ...

  2. lambda表达式树

    一.定义: 表达式树又称为表达式目录树,以数据形式表示语言级代码.所有的数据都存储在树结构中,每个结点表示一个表达式(Expression). 二.要点: –Lambda表达式的参数类型可以忽略,因为 ...

  3. java 8 lambda reduce_JDK8新特性Lambda表达式体验

    "Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstra ...

  4. java saf_Java 8 Lambda表达式探险

    为什么? 我们为什么需要Lambda表达式 主要有三个原因: > 更加紧凑的代码 比如Java中现有的匿名内部类以及监听器(listeners)和事件处理器(handlers)都显得很冗长 &g ...

  5. lamda表达式python_Python--13 lambda表达式

    python 允许使用lambda表达式来创建匿名函数 lambda表达式 >>>def ds(x): ... return 2 * x +1 ... >>> ds ...

  6. C++11:Lambda表达式(匿名函数)理解

    C++在C11标准中引入了匿名函数,即没有名字的临时函数,又称之为lambda表达式.lambda表达式 实质上是创建一个匿名函数/对象.即你可以理解为(Lambda 表达式实际上是一个函数,只是它没 ...

  7. java8 lambda 表达式详解

    lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法 使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例 可以将 lambda ...

  8. Java8中Lambda表达式的10个例子

    Java8中Lambda表达式的10个例子  例1 用Lambda表达式实现Runnable接口 Java代码   //Before Java 8: new Thread(new Runnable() ...

  9. 【读书笔记】Lambda表达式

    Lambda表达式,是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. Lambda表达式, 都是用"=>"运算符. 读作"goes t ...

  10. 【C++】lambda 表达式

    1.lambda 表达式 1.1 lambda 特点 lambda表示一个可调用单元,可视为内联函数 范式 : 具有一个返回类型,一个参数列表,一个函数体 [captrue list](paramet ...

最新文章

  1. 用keil怎么擦除_用这种方法销毁硬盘数据,即使美国中央情报局也难以恢复
  2. python学习费用-Python培训多少钱?学习Python技术成本高?
  3. 前端画面-下拉后滚动
  4. 关闭裁剪功能_4个图片裁剪技巧,瞬间看出Word大神与小白的差距!
  5. Linux下Verilog仿真过程(一)
  6. c语言计算机编程例题详解,计算机C语言编写程序题及答案解析精选.doc
  7. c51随机数不重复_单片机定时器设置不重复随机数
  8. mybatis 中case_解决mybatis case when 报错的问题
  9. 因情制宜,建立“适当”的索引
  10. SQLite异常:unsafenativemethods.sqlite3_open_interop
  11. ssm网上球鞋商城(电子商务系统)ssm购物系统,ssm电子产品销售ssm鞋店销售购物ssm商城源码JSP购物系统
  12. 迪兰RX550超能4G,这玩意儿居然可以开核?!!
  13. vue用vue-qart生产二维码
  14. 白杨SEO:推广与运营有什么区别和相同?推广如何转运营?
  15. excel双击打不开,但是点击文件里的打开就行
  16. HZNUoj 1875 WA Jiana的游戏
  17. 第14章 Proxmox VE桌面虚拟化或桌面云
  18. php获取时间戳及对时间戳进行格式化处理
  19. 华为RH2288 V3安装 linux 龙蜥anolis系统安装
  20. Unity中Obi绳子设置

热门文章

  1. 算法题:矩阵修改为黑白矩阵
  2. 劳务派遣人员管理办法范文
  3. android脚本,安卓好用的脚本程序—Gscript
  4. matlab 坐标系转换矩阵,坐标系转换矩阵生成
  5. 微信网页开发(3)--微信网页授权
  6. c语言 字母常量,C语言常量的类型
  7. 西电操作系统:进程程序复习
  8. STC15单片机内部RAM讲解
  9. kaggle 电商数据分析
  10. 第三方支付接口对接基本流程