位置: 编程技术 - 正文

Mono2.0 对C#闭包 与 donet 不同的实现导致Unity的Bug 及解决方案(c#使用mongodb)

编辑:rootadmin

推荐整理分享Mono2.0 对C#闭包 与 donet 不同的实现导致Unity的Bug 及解决方案(c#使用mongodb),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:c# 闭包内使用循环,c#封包,c# monitor wait 博客园,c#mongodb,c# monitor wait 博客园,c# 闭包内使用循环,c# 闭包内使用循环,c# 闭包内使用循环,内容如对您有帮助,希望把文章链接给更多的朋友!

转自 异步函数中 ,对界面上的 9 个按钮进行 onClick 设置匿名函数,函数使用Log 打印出当前的Button 的 Index 。代码看起来没有问题,但是测试发现

点击所有按钮 都输出了 8 ,也就是说,虽然我在代码中重新创建了一个 int &#;并赋&#;index的&#;,但是实际上却根本没有生效。

如下:转自 8 。

转自 a 在C#中变成了成员变量不成 ,于是切换到同步代码测试。

测试发现同步代码一切都正常,每个按钮都输出了正确的 index。

转自 来修改替换。

于是先使用Delegate 来替换匿名函数解决这个bug。

首先添加一个类 EventTriggerListener ,用来监听Unity 中的 点击事件,然后回调。

然后代码修改如下:

测试结果转自 的实现不一致导致,可以去查看 反编译出来的 IL 代码。

然后我就去看了 反编译出来的 IL代码。

反编译的流程如上篇文章所讲:

Unity3d 反编译破解游戏 简单示例 (使用ildasm反编译DLL修改然后重新编译DLL)

转自 C# 中的闭包

知识点先行:

对于匿名函数中的变量,C#在编译成 IL 代码的时候,会为这些变量创建一个类。

如下图

Mono2.0 对C#闭包 与 donet 不同的实现导致Unity的Bug 及解决方案(c#使用mongodb)

转自 a 会创建出一个类 <TestSync>c_AnonStorey2

异步中的a ,嗯?没有为a 创建类,但是为 迭代器创建了一个类 '<TestAsync>c__Iterator1

首先来看看同步代码反编译出来的 IL 代码:

大意就是,对 index 与 9进行对比,如果小于9就跳转到开头继续 for循环,每次循环都会 实例化一个 <TestSync>c_AnonStorey2 (int a = index),所以在同步代码中,a是正确的&#;。

转自 IL文件如下:

TestAsync:class[mscorlib]System.Collections.IEnumerator()

看到函数中实例化了 为 迭代器创建了一个类 '<TestAsync>c__Iterator1

然后'<TestAsync>c__Iterator1的结构如下

主要查看 MoveNext:bool() 的代码

转自 其实是生成的这个类的成员变量,MoveNext中一直在对 a 进行重新赋&#;,而没有多次创建 a ,所以 a 的&#;是多次被修改最后修改为 8 。

转自 ildasm使用及IL 语法介绍

关于更多IL 语法命令查询

示例工程下载:

转自

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Unity3d】注意C#的字符串拼接效率问题 现在项目中用的Log输出机制,都是使用StringBuilder进行字符串拼接的,那么为什么要使用StringBuilder进行字符串拼接呢?一开始是这样的:privatestringcontent;publicvo

【Unity3d】如何在Unity中动态载入Lightmapping 用Lightmapping的好处就不用多说了(渲染速度快又出效果),下面是解决方案一.首先,美术将A.Prefab放到场景中打光,渲出Lightmapping,假设生成的的是A_Lightmapping.ex

[置顶] LZMA C# SDK 子线程压缩与解压缩 Unity3d实例 参考雨松的LZMASDK使用方法:

标签: c#使用mongodb

本文链接地址:https://www.jiuchutong.com/biancheng/368416.html 转载请保留说明!

上一篇:以游戏实例介绍Unity3d(如何写出一篇游戏活动案例)

下一篇:【Unity3d】注意C#的字符串拼接效率问题(c#在unity的作用)

  • 税务知识:同期资料应包括哪些内容?
  • 报关金额必须跟收汇金额一致吗?
  • 进项税额转出是在当月还是回到所属期
  • 差旅费是计入
  • 出口报关单运费小于实际运费
  • 机票抵扣怎么填申报表
  • 居民转供电收费标准
  • 金蝶专业版利润表本年累计公式
  • 出口的商品交消费税吗
  • 合并会计报表编制讲解视频
  • 土地转让合同也叫什么
  • 增值税计算方式举例
  • 查增应纳税所得额怎么算
  • 建设单位收到施工承包单位的单位工程验收申请后应组织
  • 公司之间借款如何做账
  • 价税合计是什么会计科目
  • 房产税逾期有滞纳金吗
  • 其他服务业经营范围包括哪些
  • 豪华小汽车消费税
  • 公司个人所得税怎么申报
  • 电子发票会计怎么记账
  • 应付职工薪酬调到其他应付款
  • 个体工商户给员工交社保属于职工社保吗
  • 预付账款为什么是资产
  • 电脑睡眠唤醒教程视频
  • 辅导期纳税人增值税专用发票数量不得超过
  • 销售使用过的固定资产怎么填申报表
  • 企业补充养老保险
  • 企业安置残疾人如何残联备案
  • 母公司收取子公司利润交增值税吗
  • 古罗马广场意大利
  • 民间非营利组织会计制度
  • 清包劳务有措施费吗
  • 小规模纳税人每月申报什么税
  • vue 绑定子组件属性
  • vue移动
  • vue之间的组件通信
  • 企业所得税汇算清缴
  • php中isset函数作用
  • 织梦怎么改网站主页
  • 企业异地预交的税怎么算
  • python 协程 yield
  • 支付国外佣金的税率多少
  • 建筑设备的概念,作用及其研究内容
  • 股权激励税务处理方案
  • 哪些合同必须签订书面合同
  • 税务师工作年限证明材料
  • 企业支付的佣金计算多少税率呢
  • 投资性房地产公允价值模式账务处理
  • 会计付租金会计分录
  • 跨年取得的发票金额大于暂估金额
  • 广告费收入如何填写增值税申报表
  • 个体工商户缴纳社保属于职工社保吗
  • 养老保险滞纳金计算器
  • 销项负数发票开了需要给对方重开发票吗?
  • 营销活动费计入成本吗
  • 使用sql查询
  • select语句中的select*说明
  • MySql 5.6.14 Win32位免安装解压缩版配置教程
  • ssh -i命令
  • 怎样升级智慧中小学版本软件
  • win8系统版本
  • cmd命令行删除文件
  • os x 10.10.5
  • win8打开cmd的快捷键
  • windows7开始菜单
  • iis安装步骤 windows server 2008
  • 详解16型人格
  • android Unable to execute dex问题的解决
  • win10自带终端
  • html如何用css
  • JavaScript中的case
  • python访问地址
  • js中ajax完整例子
  • android基础知识大全
  • 基于bootstrap的网站
  • 构建税务系统纵向到底
  • 督察综合服务中心是干什么的
  • 深圳国税app官方下载
  • 税收优惠政策有什么公司受影响
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设