Unity Mono foreach BUG性能测试】的更多相关文章

# 环境 - Unity 4.6.4 / Windows # 测试代码 # 结果数据 # 结论 foreach存在bug,会导致GC,并且效率低下: 使用GetEnumerator代替,没有GC,并且速度快10倍! 建议迭代操作中,List使用for,Dictionary使用GetEnumerator 来自为知笔记(Wiz)…
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源代码(dll文件) 解密方法:libmono.so (重点:加入解密算法并重编译此文件) 加密的目地 .NET Reflector等反编译工具 无法通过对dll反编译得到源码 注意事项 dll的加密算法和libmono.so解密算法一致 思路分析 重点:我们需要对libmono.so重编译,加入我们…
对于没有升级到 Unity5.4的用户,发布安卓版本都会有对 C# 脚本进行加密的需求,我们项目在裸奔了很长时间后,决定开始做这件事. 网上查看了很多资料,我很希望直接在 windows 下编译而不去安装虚拟机在 linux 或者在 mac 下安装,大概预计猜测就是 Cygwin, MinGW, MSYS 之类.最终 这篇博客 给我了很大的帮助,最终在继续踩坑和摸索下,完成了编译. 这里只总结下编译的过程,这里是重点,至于加密方法很多,各自选择吧,不在此赘述. 下载 Unity-mono 源码…
Unity的mscrolib.dll和.Net的mscrolib.dll 好奇于Unity的mscrolib.dll和.Net Framework提供的mscrolib是否一致. .Net的mscrolib.dll 多语言标准通用对象运行时库(Microsoft Standard Common Object Runtime Library)就是指mscrolib.dll, Unity的mscrolib.dll 在Unity的安装目录下:X:\xxx\Unity_4.5.0\Editor\Data…
上一篇说了如何编译 Android 下的 mono,这里简要说下编译 windows 版本的 mono,就是 mono.dll,Unity 版本只有一个 mono.dll,官方的 mono,好几个可执行文件.由于一开始用了 mingw 和 msys 编译的 android 版本,所以我变顺其自然的也是用这个环境编译. 我分辨尝试和修改了 external/buildscripts 下面的:build_runtime_win.pl, build_runtime_win64.pl, build-mi…
在unity编辑器中点运行后,如果直接在mono中打断点是不起作用的,需要再点击mono的run按钮,此时弹出Attach to Process对话框,如图: 选中其中的Unity Editor (Unity),点Attach,然后断点就可以起作用了.…
.net C#下测试: public class Class1 { public bool toggle1 = true; public bool toggle2; } 一个结构类Class1,对里面两个成员通过初始化器执行初始化.在原生C#里测试,结果是正常的 unity的mono下测试: 在unity下测试,结果居然被覆盖了? 今天就被坑了..没想到居然是unity的问题…
Mac: 修改快捷键 删除一整行 Delete Entire Line    Command+D Format Document   Shift+Command+F 在文件中查找 Fin in Files   Control+H Quick Fix  Ctrl+1 || Command+1 Import Symbol      Alt+/ Navigate Back   Alt+ 左箭头 || Command+[ Navigate Forward  Alt+右箭头 || Command+] Fi…
StopAllCoroutines有时候不用不行. 但只要一用,就可能导致无穷无尽的bug. 原因是StopAllCoroutines会将当前脚本中所有coroutines都停掉,而没法做到只停掉我们想停的那一部分coroutines. 解决办法是:用多个脚本. 把一组想一停全停的一组coroutines放在一个脚本里,把另一组想一停全停的一组coroutines放在另一个脚本里...…
从以前一个文章转移过来的内容,以后会进一步进行测试  内容  毫秒数(Editor)  毫秒数(Build PC) 加减内部变量 4ms  1ms new List<int>() 559ms  479ms str.IndexOf 103ms  40ms GetComponent<Component>() 261ms  133ms GetComponent<Transform>() 257ms  130ms GetComponents<Component>()…
Unity中foreach会增加GC unity中for效率比foreach高? 在unity中使用foreach遍历集合会增加gc alloc,参考的话题:作为Unity3D的脚本而言,c#中for是否真的比foreach效率更高? foreach造成gc alloc Unity Mono的foreach造成GC Alloc的BUG与实测 C#遍历集合方法 ToArray ToArray等于把Dictionary拷贝了一份 使用Linq Enumerable.ElementAt<TSource…
起因 接收到一个UNITY文件处理的任务(c#逻辑代码存放的Assembly-CSharp.dll可热更等需求) 需要重新编译UNITY的mono模块 用于安卓环境下对DLL的定制处理 上网查阅了一些资料,经过多次尝试,得出以下编译成功的环境 ubuntu 16 32位(32位推荐 似乎脚本在X64处理有些问题) gcc 4.8以上 glib  2.0 以上 我采用的虚拟机安装unbuntu 32位系统 准备 1 首先 sudo apt-get udpdate 刷新更新源 2 然后批量安装自己所…
一.分析 首先,我们要知道Unity,Mono,.Net 三者的关系.需要简单说一下.Net. .Net拥有跨语言,跨平台性. 跨语言:就是只要是面向.Net平台的编程语言,用其中一种语言编写的类型就可以无缝的在另外一种语言编写的应用程序中互操作. 跨平台:一次编译,不需要任何代码修改,应用程序就可以运行在任意在.Net实现的平台上跑,即代码不依赖于操作系统,也不依赖硬件环境.一个.Net程序运行的核心在于.Net CLR(公共语言运行时,或者称为.Net 虚拟机,类似java虚拟机的概念),为…
建议读者先看这篇博文:http://blog.csdn.net/zzxiang1985/article/details/43339273,有些技术已经变了,比如第1招,unity5的打包机制已经变许多了.不像其他招基本还是可以学习的,比如:透明通道分离,关闭texture read/write选项(其实其他资源得read/write选项也类似,比如动画资源等),减少场景中的GameObject数量,整理图集(一般是一个面板使用2个图集:当前面板一个图集+基本图集),使用多个UIPanel隔开dc…
1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart Your Art 5. Faster Physics 6. Dynamic Graphics 7. Masterful Memory Management 8. Tactical Tips and Tricks 1. Detecting Performance Issues  The Unity Prof…
官方的api可以直接获取预览图像,如下所示: Tex=AssetPreview.GetAssetPreview(Object m)as Texture; 但是如果prefab是组合体的话(即一个prefab下包含2个或多个子物体),便只返回null.可以算是unity的一个bug吧. 所以需要自己写函数来实现prefab图像预览. 思路是将Prefab实例化到场景,并利用RenderTexture进行摄像机截取图像作为预览图像,代码如下: /// <summary> /// 获取预览图象 //…
unity mono 地址:https://github.com/Unity-Technologies/mono 下载与unity版本对应的unity mono. brew安装:http://brew.sh/index_zh-cn.html mono需要autoconf automake libtool pkg-config这些工具. brew install autoconf automake libtool pkg-config. mono下/mono/metadata/image.c里mo…
对Unity各种API的细节进行测试 Common 一些Unity基础操作的性能测试 Animation/Animator Animation Play/Stop测试 关于Animation动画事件的几项测试 关于AnimationState的测试 Animator的“当前剪辑CurrentAnimatorStateInfo” Animation在每一帧中的执行顺序测试 Rigidbody/Collider 刚体Collider包围测试(重叠后,挤出和质量的影响) Rigidbody Sweep…
一直以来对Camera的Aspect和Game窗口的Aspect都是一知半解,某天从一本书中看到了对Camera的API讲解,但是总觉得对Aspect讲解的有问题.于是就认真的思考起了这个问题,还发现设置完Cmera.aspect之后,Scene窗口的视椎体竟然不同步, 也不知其原因.苦恼了很久.经过一番研究并与同事讨论有所收获,便写下此文.一方面为了强化自己的理解,一方面也为了分享给更多人. 言归正传,大家都知道我们在场景中放置的物体最终渲染到屏幕上都是离不开我们的摄像机.对于透视摄像机(Pe…
你是安装在/etc下的吧? 5.2是没有serverbusy的提示的,那时,它就傻等,给人造成down的假像.而现在的版本,会提示的. 你升级时,upgrade后边加参数了吗? 加了  /etc/jws 哦,那就不会有问题. 建议一下.你看看有没有这个文件夹: /usr/jexus,如果有,就删除.然后,停止jws,再在/etc/jws文件夹中,运行 sudo ./jws regsvr   然后,再启动它. 这样,可以排除安装jexus到了两个文件夹,而且不同版本库多次注册的而造成不可预测的错误…
unity版本为5.1.1,在编辑器里运行没问题,build出的windows版运行也没问题,但build出的mac版在个别场景切换时会卡死,通过查看log(查看build版本log的方法参考:http://blog.theknightsofunity.com/accessing-unity-game-logs/),看到最后报出的错误是: Receiving unhandled NULL exception 如果改成development build,则不会卡死,运行正常. 搜到这个帖子:htt…
最近正在做新大厅的红包推荐口令快速领金币入口拍卖行之类的功能,同事把我的捕鱼整合到他的项目中时出现了闪退的问题,经排查是因为strip engine code选项. Strip engine code在build setting的other setting中,勾选可以让代码进行压缩,自动不打包没有用到的代码,比如一个2DUI游戏没有用到Rigidbody等物理类的组件,但是勾选这个选项后可能会导致个别项目进行到有些地方直接崩溃,我们的捕鱼就不能勾选,我把这视为Unity自身的BUG,使用时还请慎…
作者:Poan,腾讯移动客户端开发 工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest 导读 随着Unity.cocos2dx等优秀跨平台游戏引擎的出现,开发者可以把自己从繁重的Android.iOS原生台开发中解放出来,把精力放在游戏的创作.原来做一款跨平台的游戏可能需要开发者懂得Java.Objective-C.C#甚至是C.C++,现在借助Unity我们开发者只需要懂得很少的原生应用开发知识就能够打造一款优秀的游戏.特别是在鹅厂,有了Apollo这样的组件…
本文由  网易云发布. "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物由学"希望通过一篇篇技术干货.趋势解读.人物思考和沉淀给你带来收获的同时,也希望打开你的眼界,成就不一样的你.当然,如果你有不错的认知或分享,也欢迎通过邮件(zhangyong02@corp.netease.com)投稿. 以下为正文: 3月25日,2018 Unity技术路…
Windows 版Unity安装: 考虑到在虚拟机中运行Unity比较卡,所以采用在Windows Unity上将项目发布好然后再复制到Mac虚拟机中通过XCode进行编译的方式. Unity版本为 Unity2017.2.0f3 .注意当安装作为ARKit开发环境时,需要注意未标注资源包不能 安装,否则发布到IOS平台在XCode中编译会出现很多错误,这可能是Unity的一个bug,尝试了很多次才发现这个问题.如下 安装完成后先不要启动unity,找到C:\ProgramData\Unity\…
游戏提交苹果审核,被打回.在 bugly 上没有查到崩溃信息,苹果给了 crash 日志也说明. 拒绝原因如下: Your app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review. logs 日志也看不出什么,初看像是 IPv6的问题,实际上与IPV6无关. 之后同事帮忙搜索文章,有一篇文章说是 AB 的加载方式,不要用 WWW.我们游戏里没有用过这个方法,先排…
最近在开发中遇到unity游戏在ios11上不显示泰语的问题,全部显示为方框内一个问号. 通过搜索发现这是Unity的一个bug,在2017.3中修复了 但升级unity风险很大,所以我采用了该文中提到的另一方案:在用户选择泰语时加载泰语字体(如Noto Serif Thai.ttf)…
前几天在做一个使用URL通过WebRequest请求HTML页面的功能的时候遇到了点坑,程序在开发环境没有任何的问题,部署到linux mono上之后就跪了.代码如下: public static string GetHTML(string url){ string htmlCode; try { HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); webRequest…
参考:http://www.xuanyusong.com/archives/1919 http://www.omuying.com/article/48.aspx   主要功能: 1.导出场景的配置文件 2.导出当前场景中资源的AssetBundle 3.客户端从服务器获取配置文件 4.解析配置文件,并根据配置文件下载AssetBundle 5.实例化并还原场景   1.场景设置:将需要导出的场景资源设置为预设   2.将场景配置导出为XML文件   [code]csharpcode: usin…
在使用Unity开发游戏的过程中,借助Profiler来分析内存使用状况是至关重要的.但许多开发者可能还对Profiler中各项数据表示的含义不甚明确,今天我们Unity官方的技术工程师柳振东,将针对Profiler内存分析相关的问题及解答,与大家进行分享. 要想完全发挥Profiler内存分析的威力,首先要做的就是了解Profiler展示的数据所表达的含义,以及到底哪些模块所使用的内存才会被统计到Unity的Profiler中.Profiler涉及到的知识点还有很多,我们今天先从中挑选一些大家…