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-03 Unity3D研究院新方法加快代码编译速度(九十六) 之前可以将核心框架代码放在Plugins目录下,只要不修改该目录下的代码,就不会造成重新编译从而加快编译速度。新版本的Unity引入了一个新概念,Assembly可以将目录下(包括子目录)下的所有cs代码编译成DLL,这样就可以进一步加快编译速度。 Create->Assembly De.... 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-6757fd8c0804b585146136/] Android应该有些手机也支持3DTouch功能。 唯一需要注意的是,当触发3DTouch的时候希望有一个震动的反馈,Unity.... Read More >
201801-26 Unity3D研究院之生成客户端灰度测试包(九十四) 灰度测试包应该和正式包的内容完全一致,只是添加了一些辅助的开关,例如:可以进调试服务器、可以输入gm指令、可以下载测试url的cdn热更资源。如果开发都打两个包的话就很麻烦。日后游戏上线后我们需要,dsym和带符号表的so用来还原闪退的堆栈。Android只是编译unity的时候会生成il2cpp..... Read More >
201712-23 Unity3D研究院之全方位定位Android闪退(九十三) 首先强烈建议大家安卓打包一定要用il2cpp,我们项目对比了mono发现il2cpp闪退方面比mono少了很多。平常给QA打包推荐勾选Development Build 和 Autocontent Profiler 。这样如果发生了闪退可以直接从log中定位,或者真机连profiler。 我们.... Read More >
201706-08 UGUI研究院之新手引导事件上下分离(二十七) 新手引导最好和业务逻辑拆开,也就是做新手引导的程序员不能去影响到下面做系统的人。 1.开发一个新手引导编辑器,让策划配出每个引导的点击区域。 2.在Shader中扣一个洞。(圆形或者矩形)用来做显示的点击区域。 3.新手引导的进度需要与服务器进行同步,为了不影响到下面的业务逻辑,在.... Read More >
201705-30 Unity3D研究院编辑器之ManagedStaticReferences()静态引用(二十九) Unity的Profiler可以看出来内存,但是遇到ManagedStaticReferences()估计大家都跪了。因为这个资源被静态引用了,然后我们并不知道它被哪里静态引用了。 我想了个办法,可以通过反射来查询它。先讲一下原理 1.反射dll 2.遍历所有的.cs 取出所有带.... Read More >
201705-07 Unity3D研究院编辑器之EditorOnly(二十八) Unity自带了一个EditorOnly的Tag。意思就是标记过这个游戏对象,只在Editor下生效不会被最终打进包里。这个功能其实很必要,但是可能被很多团队都遗忘了。 例如:美术做的场景需要一些摄像机、角色、特效来进行辅助参照。这些东西单纯只是用来参照的,并不希望打进游戏包中。但是开发阶段又.... Read More >
201704-19 Unity3D研究院编辑器之[System.Serializable]数组List对象添加默认值(二十七) [System.Serializable]对象放在数组中,默认在Inspector面板上Array的数量是0,如果在这里修改数量,新加的元素在Inspector面板上它是没有默认值的。 比如:我有一个很轻量级的控件,代码中需要序列化List数据,没必要在写个类OnInspectorGUI中自定.... Read More >