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. SPI flash配置
  2. 关于while 和if
  3. 使用beanUtils操纵bean的属性
  4. c++类与类之间关系
  5. maven设置代理服务器_使用Maven设置您的应用服务器
  6. 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
  7. Kippo:一款强大的SSH蜜罐工具
  8. Mac os 进行Android开发笔记(1)
  9. 使用ASP.NET Membership
  10. VS2015产品密钥
  11. dtu连接mysql_数据中心使用dtu远程连接oracel 9i数据库问题
  12. 使用john进行密码爆破
  13. 关于table固定宽高以及td内容过长换行的解决办法
  14. 如何解决王者荣耀排位赛中的系统制裁
  15. 计算机无法识别出cd驱动器,迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?【图解】...
  16. 用App Inventor做一个安卓程序
  17. canvas 画哆啦A梦头像
  18. python爬取图片然后保存在文件夹中
  19. PCM开发板模块实验指导--有刷直流马达速度位置控制实验
  20. java中got是什么意思_Java基本概念的了解

热门文章

  1. 帧、采样率、Hz、比特率
  2. DELPHI XE10 fmx表格控件Grid单元格根据内容值来设置颜色
  3. 用SPSS做数据分析时遇到的几个小问题——解决方法!
  4. 如何在虚拟机VMware安装配置功能强大爱快软路由
  5. 【常用0x000000类型颜色代码表】
  6. 儒略历、儒略日与儒略年原来是鸡同鸭讲
  7. 如何给 PDF 文档批量添加页眉页脚?如何给 PDF 文档批量添加页码?
  8. sass和compass学习笔记
  9. python利用有道词典翻译_Python调用有道词典翻译
  10. 网站服务器怎么查ipv4,服务器的ipv4地址怎么查