位置: 编程技术 - 正文

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的作用)

  • 已认证进项税转出怎样做账务处理
  • 一般纳税人的增值税征收方式的特点是
  • 资产损失税前扣除管理办法 税屋
  • 房屋租赁的发票备注怎么写
  • 租车开发票属于什么类
  • 验钞机怎么做账
  • 发票弄丢下一步怎么办
  • 服务费和佣金的关系
  • 原材料计划成本和实际成本的区别
  • 国外出差差旅费
  • 劳务费的专用发票有哪些
  • 公司承租厂房装修协议
  • 个人开利息发票的税率与会计分录
  • 食堂买的固定资产怎么帐务处理
  • 顾客让抹零头应对话术
  • 箱包类增值税发票多少点
  • 房地产企业增值税预缴
  • 投资收益所得税税前扣除
  • 房开公司需要资质吗
  • 一次性发放几个月的工资怎么申报
  • 工程款主营业务成本
  • 预提费用对应
  • 应收账款及票据
  • 抵扣进项税有期限吗
  • 进厂的政府补贴怎么拿
  • 外贸综合服务企业代办退税
  • 如何配置环境变量windows
  • XP系统,右下角本地连接图标消失的解决办法
  • fsrec.sys
  • php file_exists 检查文件或目录是否存在的函数
  • 担保公司的会计分录
  • 经营出租的机器设备需要计提折旧吗
  • 怎么确认旧城改造完成
  • if.else
  • 会计上社保的分录是什么
  • 史上最贵的微博
  • php 动态执行代码
  • 申报系统异常
  • deepwiser怎么用
  • 前端 原生
  • 个人所得税的现状分析
  • php处理接收的xml
  • php使用什么开发工具
  • 经营租入固定资产账务处理
  • 客运公司做账怎么做
  • 汽车上牌照的费用计入什么会计科目
  • 劳务公司怎么开税票
  • 增值税普通发票几个点
  • 织梦如何给栏目增加缩略图
  • 合并会计报表编制实例
  • 内账的账务处理
  • 财务软件在建立账套功能中提供了
  • 销售退回会计分录
  • 出售固定资产税率是13%吗
  • 出口后收不到货款
  • 长期股权投资会计实训心得
  • 备用金怎么计入明细账
  • 机票退票手续费可以开发票吗
  • 测绘费如何入账
  • 项目完工后员工工作总结
  • 餐饮业怎样做账
  • 会计凭证传递的组织工作主要包括
  • freebsd怎么安装
  • mac10.5系统
  • macappstore下载软件一直要密码
  • windows缓存写入失败,数据怎么找回
  • wim10飞行模式
  • win7任务栏透明调不了
  • win8.1技巧
  • 列举linux常用的几个命令
  • 游戏输入法安卓
  • html中清除浮动的关键代码
  • bios查看电脑配置信息
  • python数据结构教程
  • unity开发手游
  • u3d脚本语言
  • python怎么写多行
  • python3中raw_input的用法
  • 体检机构 保险
  • 企业年金可以补办吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设