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 >
201809-30 Unity3D研究院GPU Instancing实战(九十七) 最近将GPU Instancing应用在游戏中,遇到了一些坑和大家分享一下,我们用的版本是unity2017。前面说了GPU Instancing目前适合游戏中的草、石头等元素较多的地方。 首先需要开发一个刷地表的编辑器,试想一下如果场景上的草每个都要美术手动的去摆这得多麻烦啊,如下图所示,根.... Read More >
201809-22 Unity3D研究院编辑器之获取粒子准确数量(三十) 最近在做一些辅助工具帮助特效师在开发特效的时候可以知道当前已经用了多少的粒子数,然而Unity也提供了这样的预览面板,但是看起来特别不方便。关键是很多特效都是粒子+mesh结合使用的。而且我又发现particleCount api提供获取粒子数量并不是很准,不能及时获取当前的粒子数量。 .... Read More >
201809-03 Unity3D研究院GPU Instancing测试 GPU instancing 很早就支持手机了(Android只支持Opengl ES 3.0),但是我一直不知道将它应用到哪里,刚好最近在调研这个我对它又重新测试了一下。 如果是不动的物体勾选static静态合并批次(40-50帧率) 自定义Shader中勾选Enable GP.... Read More >
201805-15 Unity3D研究院之旧版本Unity使用新版本XcodeAPI 由于目前Unity的项目比较老(Unity5.x),自动打包Xcode持续集成的时候遇到了问题, 因为PBXProject有些方法旧版本没有,今天我无意间发现一个巧妙的方法解决它。 https://bitbucket.org/Unity-Technologies/xcodeapi 将最新.... Read More >
201805-03 Unity3D研究院新方法加快代码编译速度(九十六) 之前可以将核心框架代码放在Plugins目录下,只要不修改该目录下的代码,就不会造成重新编译从而加快编译速度。新版本的Unity引入了一个新概念,Assembly可以将目录下(包括子目录)下的所有cs代码编译成DLL,这样就可以进一步加快编译速度。 Create->Assembly De.... Read More >
201804-28 Unity3D研究院专治IOS查看日志各种不服(九十五) 测试拿着IOS手机过来说这里有个问题,能看看日志吗? Android上连上logcat可以很方便看日志,但是IOS就没办法。几年前我写过一篇文章通过写日志的方式保存在本地 http://www.xuanyusong.com/archives/2477 后来ios把这个功能封了,无法.... Read More >
201803-20 UGUI研究院之iPhoneX自适应分辨率(三十一) 最近把游戏的iPhoneX自适应做完了,并且已经过了审。我的做法是每个界面的最上层都是一个横纵Stretch自动拉伸的,检测当发现是iPhoneX时,打开界面代码中自动设置 Left Top Right Bottom 为44. 由于我们用的是Unity5.5.4,并没有方法来判断是.... Read More >
201802-13 Unity3D研究院之Mac下利用MonoDevelop查看c#内部代码 如下图所示,用MonoDevelop打开工程后, 选择一个Unity自己的DLL,比如UnityEditor.dll 面板中间选择一个你需要查看的C#类,此时代码已经出现在右侧,但是只有函数名却没有函数实现。 如下图所示,右上角Language这一栏选择c# ,然后在看代码,函数.... Read More >
201802-03 Unity3D研究院之3DTouch 最近把3DTouch功能加入到游戏中了,调研了一下,其实挺方便了。 代码很简单,如下代码所示,判断当前手机是被是否支持3DTouch ,在Update中获取压力的大小,接着就能做逻辑了。 [crayon-67b77fa6b59fd039748589/] Android应该有些手机也支持3DTouch功能。 唯一需要注意的是,当触发3DTouch的时候希望有一个震动的反馈,Unity.... Read More >
201801-26 Unity3D研究院之生成客户端灰度测试包(九十四) 灰度测试包应该和正式包的内容完全一致,只是添加了一些辅助的开关,例如:可以进调试服务器、可以输入gm指令、可以下载测试url的cdn热更资源。如果开发都打两个包的话就很麻烦。日后游戏上线后我们需要,dsym和带符号表的so用来还原闪退的堆栈。Android只是编译unity的时候会生成il2cpp..... Read More >