201906-10 Unity3D研究院之字符串拼接0GC(一百零四) 最近在优化项目,发现字符串拼接的堆内存非常大,而且非常频繁。 大概原因如下 1.字符串就是char[] 长短发生变化必然要重新分配长度,以及拷贝之前的部分,产生GC 2.字符串+=进行拼接会产生装箱,生成GC 3.Append传入值类型数据,它会调用ToString方法,需要new stri.... Read More >
201904-27 Unity3D研究院编辑器之批处理图片添加抖动(三十三) 前几天公司有个项目,由于美术做了很多背景图并且还大量的使用了渐变过度,导致压缩图片后效果非常差,而且换成RGBA16效果也不理想,如果用RGBA32那就太浪费效率了。后来发现TexturePacker具有添加图片抖动的方式,由于项目组使用了UGUI手动一个个设置这太麻烦了,所以就做了个工具。如下图所.... Read More >
201904-16 Unity3D研究院编辑器之Mac编译调试外部引用DLL(三十二) 最近在MAC下需要频繁构建DLL,并且还需要调试,写篇文章记录一下过程,如图所示,先创建一个Library工程。 右键EditReference把UnityEngine.DLL引入进来,并且取消选择Local Copy。不然后面会把UnityEngine.dll也拷.... Read More >
201902-14 Unity3D研究院编辑器之监听Unity编辑器关闭事件(三十一) 以前就想要这个功能,想让美术或者策划在关闭unity的时候做一些检查的操作。 [crayon-673edf0bbc2ce088871256/] .... Read More >
201901-18 UGUI研究院之找到具体某个引起了网格重建的UI元素(三十二) UGUI的标志性函数Canvas.SendWillRenderCanvas,我们只知道网格进行了重建,但是并不知道是哪个Canvas,由于哪个UI元素引起了Canvas网格的重建。比如,修改RectTransform的属性、Text文本内容、更换Sprite、颜色、都会引起网格重建,通过观察UGUI.... Read More >
201901-12 UGUI研究院之一个脚本同时裁切UI元素和粒子特效和3D模型(三十一) 前两个项目我一直用的是 UGUI研究院之Mask裁切UI粒子特效或者3D模型(十七) 做的裁切,但是实际开发中由循环列表中需要动态创建元素,每个新创建的元素都需要根据MaskRect的区域重新给Shader中指定,这个小小的隐患总是引起BUG。最近在做技术储备看到了Stencil一个东西,发现可以很.... Read More >
201812-26 Unity3D研究院之被坑了的浮点数的精度(一百零三) 最近被浮点数坑了,所以一定要写篇文章记录下。先看看如下代码 [crayon-673edf0bbee2c070139203/] 通过上面代码,我们可以发现float和uint(为了取最大值,这里就用无符号整形)都是4字节,那么为什么float的取值范围要比int大呢?继续再看一段代码 [cray.... Read More >
201812-10 Unity3D研究院之手机上保存Profiler与提取查看(一百零二) 手机上可以把一段时间的profiler日志保存在本地,接着在手机里把文件取出来就可以在电脑上查看了,很方便,上代码,在需要保存手机Profiler日志的时候调用 ProfilerUtils.BeginRecord();并且我已经封装好了。 [crayon-673edf0bc01693729591.... Read More >
201810-31 Unity3D研究院之IOS在Windows上查看日志就像Android的adb一样方便(一百零一) 我以前写过一篇 Unity3D研究院专治IOS查看日志各种不服(九十五) 但是今天无意间发现了一个工具iOSLogInfo,这个工具比之前的做法更好更方便。 下载地址:https://www.blackberry.com/blackberrytraining/web/KB_Resources/.... Read More >
201810-24 Unity3D研究院之运行时合并ETC1、ETC2、ASTC、DXT1、DXT5、PVRTC贴图(一百) 今天是2018年10月24日,祝大家程序员节快乐。 游戏中一旦有换装功能,角色可能就会是多个DrawCall了,所以我们可以将部件的贴图动态合并在一张中。如果想合并PVRTC2或者PVRTC4可以参考我上一篇文章。Unity3D研究院之IOS运行时合并PVRTC贴图(九十九) https://.... Read More >
201810-23 Unity3D研究院之IOS运行时合并PVRTC贴图(九十九) 游戏中一旦有换装功能,角色可能就会是多个DrawCall了,所以我们可以将部件的贴图动态合并在一张中,本文聊聊PVRTC2bit 和 PVRTC4bit 贴图合并的方法。先看看PVRTC贴图的排列方式。 核心方式是Texture2D.GetRawTextureData()获取贴图的原始.... Read More >
201810-14 Unity3D研究院自动注入代码统计每个函数的执行效率以及内存分配(九十八) 以前用UWA和WeTest的工具来查看代码效率,他们都能提供我们代码每个函数的统计效率,然而并不需要我们做什么,所以我就在想如何实现一个类似他们的功能? Unity提供了Profiler.BeginSample();Profiler.EndSample();方法来统计代码效率,但是有两个问题 .... Read More >
201810-01 我的新书Unity3D游戏开发(第2版) 来啦!!来啦!!大家好,我和图灵出版社合作的新书《Unity 3D游戏开发(第2版)》终于出版了!6年后再一次hello world!!! -------------------------------------------------------华丽的分割线--------------.... Read More >