- 博客(96)
- 资源 (37)
- 收藏
- 关注
转载 Q&A——渲染优化
渲染优化Q1:在Android平台上,PlayerSettings里开启/关闭Multithreaded Rendering,在性能和稳定性上有多大的区别? 一般是勾还是不勾?就我们目前深度优化过的项目而言,Android App中开启多线程渲染确实可以在渲染模块中带来较大的性能提升,但我们并没有详细地定量分析过,所以很难给出“到底能提升多少”的定量说明。对于稳定性来说,现
2017-03-31 18:26:08 1682
转载 Q&A——资源管理(十四)
资源管理Q1:我的游戏运行一段时间之后,已经切换到一个空场景了,然后手动调用了System.GC.Collect(); Resources.UnloadUnusedAssets();为什么还是会有这么多贴图资源被引用呢。我猜可能是由于一些脚本中的静态变量引用导致,请问有办法查出来是哪些静态变量吗?很大可能是这些资源直接或间接被其他Container缓存了,这种情况在我们进行内存
2017-03-31 18:22:15 494
转载 Q&A——UI性能
UI 性能Q1:UWA建议“将较多的动态UI元素分组放在不同的UI Panel中”,那么请问如果是ScrollView里面多个item的话,是否意味着每个Item都加一个Panel会更好一些?“动态元素”其实是相对的。在 ScrollView 中,一般情况下,如背包,其中的Item在滑动过程中是相对静止的,因此这种情况下只需要将这些Item放在一个UIPanel中即可。但在类似
2017-03-31 18:18:34 457
转载 Q&A——资源管理(十三)
资源管理Q1:如下图,在UWA性能报告中,我们发现Camera.Render下CreateVBO的开销较高,请问这个是如何引起的?从图中可以看出,Mesh.CreateVBO是在半透明渲染的开销之下,说明这是半透明物体的渲染引起的。在我们目前测评过的项目中,仅使用NGUI的项目会在此处出现不同程度的CreateVBO的CPU开销。对此,建议研发团队首先确认其UI系统是否使用
2017-03-31 18:12:57 509
转载 Q&A——资源管理(十二)
资源管理Q1:我们在做依赖打包改进,比如UIAtlas这种脚本,AssetBundle包里脚本没有做依赖,每个包里都有这个脚本,会导致Mono堆内存增大么?对于“脚本也是资产”这一点理解的不是很透彻。脚本在AssetBundle里是不会启动,但是会出现脚本丢失。本身没有做依赖打包的话脚本是冗余在AssetBundle中吧?首先,需要说明的是,脚本本身的内容是不会被打包到Asse
2017-03-31 18:06:23 933
转载 Q&A——资源管理(十一)
资源管理Q1:怎么去掉Mesh中的Colors属性?我把FBX里的LayerElementColor字段都删了,这个Colors还是存在。默认情况下,在3d建模软件中并不会导出Color属性。以3ds max为例,Color通常是通过modifier添加的,因此只需要在导出前将其删除即可。另外也可以通过fbx sdk来直接对文件进行处理,但这种做法就需要查看官方的文档了。
2017-03-31 17:52:25 796
转载 Q&A——UI Mesh 渲染
UI Mesh 渲染Q1:在GPU分析器里面看到,同一个NGUI的图集被绘制了很多次。请问是否是由于各个界面Panel不一样导致的?这种情况下如何优化?图片中红框处的内容其实并不是同一个Atlas被多次渲染,而是拥有同一Atlas的不同Widgets在进行渲染。这些Widgets的Mesh是动态生成的,且在不同的Draw Call中,NGUI在生成它们时根据所使用的At
2017-03-31 17:50:54 569
转载 Q&A——资源制作(一)
Q1:Unity UI图集不是正方形,使用PVRTC格式的话,会出现问题么?比如是512x1024的原始比例。如果纹理尺寸长宽不相等,那么即便是2的幂次,也不会被压缩成PVRTC格式纹理。建议在iOS平台中,尽可能保证纹理尺寸为2的幂次且长宽相等。
2017-03-31 17:45:24 718
转载 Q&A——动画(一)
动画Q1:我在Profiler中看到Animator.Initialize这个耗时很大,这个有什么建议么?Animator.Instance 是因为Animator过多造成的吗?由图中可知,Animator.Initialize主要是在Instantiate实例化时引起(实际上,GameObject.Active操作也会引起Animator.Initialize),而其具体的耗时原
2017-03-31 17:44:03 1569
转载 Q&A——资源管理(十)
资源管理Q1:关于定位游戏中冗余资源引用的问题。UWA的报告中能定位到具体的引用代码么? 在Profiler只能看到ManagedStaticReferences但是具体不到引用的位置。比如Static ClassA引用一个ClassB,ClassB上引用了一个资源,就定位不出这个引用的过程。请问这种情况下有没有比较好的方法找到引用关系呢?该问题在Unity 5.3 之前的版本
2017-03-31 17:38:18 1187
转载 Q&A——资源管理(九)
资源管理Q1:我在UGUI里更改了Image的Color属性,那么Canvas是否会重建?我只想借用它的Color做Animation里的变化量。如果修改的是Image组件上的Color属性,其原理是修改顶点色,因此是会引起网格的Rebuild的(即Canvas.BuildBatch操作,同时也会有Canvas.SendWillRenderCanvases的开销)。而通过修改顶
2017-03-31 17:24:17 450
转载 Q&A——性能优化(二)
性能优化Q1:Draw Call和Setpass Call,这两个指标主要是看哪一个?关于这点众说纷纭,很多地方都是说看SetPass Call,但是在UWA的性能测试中,还是把Draw Call当成唯一指标。在 Unity 5.x 中,SetPass Call与 Draw Call相比,SetPass Call的指标与性能相关性更大(比如Static Batching
2017-03-31 17:15:17 634
转载 Q&A——资源管理(八)
资源管理Q1: 我使用Shader.WarmupAllShaders操作,在后续加载资源还是有CreateGPUProgram出现。(Shader都在一个AssetBundle文件中,都是常驻内存的,不会删掉)是必须使用ShaderVariantCollection来加载Shader吗?A:以上这种问题的较大可能是:Shader被打包到不同AssetBundle中了,WarmupA
2017-03-31 17:08:07 485
转载 Q&A——开发技巧(一)
开发技巧Q1:我移动一个物体从A点到B点,当到达B点后执行另一个事件。我现在是每帧计算物体到B点的距离,当距离小于某个值后算是到达,感觉有点浪费。有没有什么推荐的办法呢?如果每帧只进行一次距离上的判断计算,那么该耗时开销本身是很小的。当然,开发团队可以在B点放置一个Trigger,当A进入Trigger后,通过其回调函数来进行物体的后续操作。
2017-03-31 17:04:25 893
转载 Q&A——资源管理(七)
资源管理Q1:我想请教一下,下图这个函数中,每次我都申请了一个List temp = list();在这里存放6KB的数据,但是如果不做GC处理,这6KB是否就一直累加,直到做GC处理了才会释放掉,是这样么?如果调用次数很多,每次都调用一点点,也会推高内存占用吗?A:是的,这个6KB堆内存会随着Update的执行一直分配内存,所累积的堆内存会在GC触发时进行销毁。一般来说,研发
2017-03-31 17:02:27 840
转载 Q&A——内存管理(三)
内存管理Q1:有没有办法可以减少游戏中Mono内存占用的大小?我现在读完游戏表以后就占用了60MB,我看其他游戏读完配置表也才10MB左右,这个是怎么做到的呀?如果刚进入游戏后,Mono堆内存就达到了60MB,那么你的游戏项目极有可能在一开始加载了一个非常大的配置表。对此,我们建议出现该问题的研发团队对配置文件的初始加载进行详细检测,查看是否可以精简配置文件信息。如果不行,则尝试将
2017-03-31 16:57:08 664
转载 Q&A——资源管理(六)
资源管理Q1:请教个问题,我用Unity 5 里提供的Sprite Packer把A.png,B.png打进一张图集,在运行时我怎么方便地加载这两张图呢?使用场景:某个Image控件根据不同的条件显示A,或者显示B。目前通常是在脚本序列化信息中保留这两个Sprite的引用,在切换时直接通过对Image.sprite进行赋值来切换。
2017-03-31 16:54:05 1089
转载 Q&A——UI输入(二)
UI输入Q1:关于UI的Mask遮挡特效,能否提供一些解决思路呢?目前由于UI与粒子系统是两个相对独立的模块,因此两者的Mask遮挡并没有简单直接的方法。我们建议从以下几种方式来考虑实现:将粒子系统转为序列帧,通过纯UI的方式来实现;通过RenderTexture,添加一个相机来实现方形的“裁剪”;参考UI的内置Shader,编写一个受Stencil B
2017-03-31 16:51:52 717
转载 Q&A——资源管理(五)
资源管理Q1:Unity中的SerializedFile是怎么产生的?请问用Unload(false)可以清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了。而且我把图片都打成了Bundle,然后读取出来,图片的大小应该是超过了这个SerializedFile的大小的?SerializedFile是AssetBundle加载时产生的序列化信息,一般为LoadFr
2017-03-29 18:26:53 723
转载 Q&A——资源管理(四)
资源管理Q1:Unity 5.x 能把指定集合的Mesh烘焙到一张Lightmap里吗?Unity 5.x 是没有这样的功能项的。据我们的判断,这样的需求通常是为了动态加载,因此可以尝试将Mesh分组到不同的场景分别烘焙。而在加载时可通过脚本动态地合并Lightmap,同时将物件的Lightmap Index进行正确的偏移即可。资源管理Q2:请问
2017-03-29 18:11:44 460
转载 Q&A——资源管理(三)
资源管理Q1:StreamingAssetPath 和 PersistantDataPath下可以不Load AssetBundle ,直接放资源Load吗?这是可以的,但非常有限。因为不通过 AssetBundle 加载,只能通过 Unity 提供的有限的接口来直接加载外部资源,如通过 WWW.audioClip 直接加载 mp3文件,通过 WWW.texture 直接加载
2017-03-29 17:43:04 378
转载 Q&A——资源管理(二)
资源管理Q1:Prefab中的GameObject的tag设置为EditorOnly仍然会被打进Resoures包吗?有其它EditorOnly方案吗?EditorOnly理论上只对场景中的 GameObject起效。因此 Project 目录中的 Prefab 打上 EditorOnly 后,放在 Resources 目录下依然会被打进游戏包中。但只要将其放在 Resourc
2017-03-29 17:18:50 683
转载 Q&A——图形渲染(二)
图形渲染Q1:以前端游时代,材质根据Pass不同、光照环境不同可以离线预编译成ShaderCache,运行时并不需要拼材质再实时编译,只要加载二进制代码就好了。那Unity有没有做这件事呢?我们是根据平台和环境预编译的Shader。对于支持 Binary Shader 加载的设备,在首次编译某个 Shader 的时候是会生成其对应的 Binary Shader Cache ,生
2017-03-29 17:18:02 673
转载 Q&A——性能优化(一)
性能优化Q1:如图,我们在UI打开或者移动到某处的时候经常会观测到CPU上的冲激,经过进一步观察发现是因为Instantiate产生了大量的GC。想请问下Instantiate是否应该产生GC呢?我们能否通过资源制作上的调整来避免这样的GC呢?如下图,因为一次性产生若干MB的GC在直观感受上还是很可观的。准确的说这些 GC Alloc 并不是由Instantiate 直
2017-03-29 16:53:17 625
转载 Q&A——骨骼优化
骨骼优化Q1:勾选了“Optimize GameObject”这个选项后,虽然性能优化了,可骨骼的TransForm会消失,有些需求又是需要在某个骨骼的TransForm上面挂特效的,这种情况下有什么比较好的处理方案吗?在选择Optimize GameObjects后,可在Extra Transforms中加入你想挂载特效的骨骼结点,这样该骨骼结点将不会进行优化处理,即其Tra
2017-03-29 16:47:09 517
转载 Q&A——AssetBundle(资源打包)
Q1:如果我有一个Prefab,它的Dependencies都在Resources文件夹中,那么,当我在AssetBundle打包时,只打包这个Prefab(不指定BuildAssetBundleOptions.CompleteAssets和BuildAssetBundleOptionsCollectDependencies)的话,这个Prefab能够正确实例化吗?这是不能正确实例化的
2017-03-29 16:38:01 247
转载 Q&A——光照贴图
Q1:Lightmap在PC上显示正常,但是转到Android平台上存在色差,颜色普遍偏暗。一般来讲,有两种情况可能会导致色偏和亮度差异。1.Unity烘焙的Lightmap是32bit的HDR图,而移动设备通常不支持HDR图(32bit per channel),会按照LDR图(8bit per channel)的形式进行处理,因此会出现色偏问题。因此我们建议:在
2017-03-29 16:34:33 267
转载 Q&A——版本Bug(一)
版本BugQ1:在把Unity升级到5.3之后,项目中缓存的粒子特效无法正常播放了(只能播放一次),是否还需要修改粒子的设置呢?这个问题是Unity的Bug,5.4.0B3 release note 为:Particles: Fixed particle system only playing once.(会在新版本5.4修复)目前我们推荐通过另一种方法可以暂
2017-03-29 16:16:24 271
转载 Q&A——UI输入(一)
UI输入Q1:在使用NGUI时,我们通常会将很多小图打成一个大的图集,以优化内存和Draw Call。而在UGUI时代,UI所使用的Image必须是Sprite;Unity提供了SpritePacker。 它的工作流程和UGUI Atlas Paker有较大的差别。在Unity Asset中,我们压根看不到图集的存在。 问题是:1. SpritePacker大概的工作机制是什么样的
2017-03-29 16:02:48 837
转载 Q&A——内存管理(二)
内存管理Q1:我们在Profiler中发现了一个AssetDatabase的内存占用,其存在于Assets中,单个占用内存非常大。 请问该占用是如何发生的呢?是否可以避免?理论上开发者在真机运行项目时是不会看到此选项的,只有在 Editor 中运行时能看到。由于在 Editor 下运行游戏时,Profiler 中获取的内存是包含了 Editor 本身占用的内存的,因此并不准
2017-03-28 18:31:30 828
转载 Q&A——物理性能
物理Q2:UWA的报告中指出我们所使用的刚体超出了限制,我们经过测试发现只要使用CharacterController就会产生一个隐藏的刚体。而我们的角色移动是会使用CharacterController的。 为了避免这种情况,我们使用了CapsuleCollider来替代CharacterController接受点击,同时使用设置位置的方法来替代CharacterController的m
2017-03-28 18:21:46 329
转载 Q&A——运行性能(一)
运行性能Q1:如下图,我们发现WaitingForJob这个函数消耗过高导致了卡顿,请问该卡顿是否由于渲染压力过大导致?从图中看,该线程最后是在等待 Canvas.sortjob,而这是 UI 排序造成的开销(自Unity5.2版本开始,UGUI的部分计算已经移出了主线程)。详情参考:http://blogs.unity3d.com/2015/09/07/mak
2017-03-28 18:20:27 343
转载 Q&A——NGUI
NGUIQ1:NGUI变形,如下图走样了,请问是不是图片压缩导致的?当UI纹理在设备上的显示分辨率低于原始分辨率时,会因为出现aliasing现象,导致UI局部变形。通常对于粗线条、块状的UI图素,变形通常是不明显的,但对于细线条的UI图素,则可能非常明显。通常该问题可以考虑三种方式来改善:在NGUI中将UIRoot的Scaling
2017-03-28 18:15:08 240
转载 Q&A——UI
UIQ1:能否在NGUI多分辨率适应方面提供一些解决方案或者思路?多分辨率适应涉及到以下几个方面:布局。通常可以通过 NGUI 中的 Anchor 组件来实现,能够保证 UI 到屏幕上指定锚点的距离;UI 背景图比例。通常我们建议将背景图的长宽比放大,以适配不同长宽比的屏幕,但要注意两边需要留空,或者保留可被裁掉的元素;UI 的整体缩放。可以通过 UIR
2017-03-28 18:05:57 268
转载 Q&A——图形渲染(一)
图形渲染Q1:当关闭预渲染GI时会出现IndirectResolution,这个参数有什么用,为什么调大了以后会大大增加渲染时间,但是烘培出来却没有什么效果。该值主要控制的是GI的烘焙密度,数值越大,表示每个单位距离内的Texel越多,即烘焙得越精致,自然烘焙的时间也越长。该值并非越大越好,场景越小建议该值越低。该值为1时,对于多数场景,其烘焙效果已经足够了,升高该值,其效
2017-03-28 17:58:58 592
转载 Q&A——资源加载(一)
资源加载Q1:怎样动态加载Navmesh?目前Navmesh不支持动态加载,只能随场景一起加载, 因此可以考虑将带有Navmesh的场景打包成AssetBundle,然后使用LoadLevel加载AssetBundle中的场景。Navmesh的动态加载已经在Unity的Roadmap中。而当前,Navmesh是和场景绑定的,也就是说目前只能通过LoadLevel(不支持Lo
2017-03-28 17:57:20 265
转载 Q&A——资源管理(一)
资源管理Q1:iOS上PVRTC不支持NPOT的贴图压缩,在Android上可以用ETC2,但在iOS上不能压缩,内存消耗大。请问在iOS上有没有好的处理方案?ETC2仅能在支持OpenGL ES3.0的手机上进行使用,请研发团队在使用前谨慎考察支持ES3.0的手机在国内的覆盖范围。PVRTC不支持NPOT的贴图压缩,这是Apple规定的,上层应用无权对此更改。我们仅能建议
2017-03-28 17:56:02 452
转载 Q&A——内存管理(一)
内存管理Q1:如图,在Editor中查看Profiler里的内存详细信息,发现Used Total中有个“Unity”,请问是什么意思?为什么会特别大?在Editor中运行时,“Unity”大是正常的,因为在Editor中运行项目时,引擎包含了所有的资源占用的内存(除了部分纹理和Mesh是在GFX中),同时自身会进行很多的辅助操作来记录各种游戏运行信息。一般来说,在查看
2017-03-28 17:51:24 346
原创 NGUI开发优化技巧(下)
NGUI更新开销:NGUI进行自身的数据更新以及生成网格的过程中所产生的开销,目前UI部分的CPU耗时大部分都是这部分的开销;NGUI的更新开销几乎全部来源于UIPanel.LateUpdate中;一般超过3~4ms,说明这部分更新开销较高;UI更新的数量和频率通过合理的布局,可以把这部分的开销限制在很多小的范围里面;在关卡的切换或点击一些UI界面时,可以出现一些较高的峰值;但
2017-03-24 15:34:40 2611
原创 NGUI开发优化技巧(上)
UGUI和NGUI的区别:使用率:NGUI占大多数,NGUI和UGUI的使用占比为81% : 19%;易用性:NGUI占一定优势,UGUI仍在慢慢改善;性能:如果都合理搭配,UGUI在性能上还是有一点优势的,在Unity5.2、5.3之后UGUI有一部分网格合并的操作是放在多线程中进行,相对来讲,性能有一定的提升;但NGUI的优化相对更简单一些,主要是因为NGUI的Drawca
2017-03-24 15:17:43 890
Simple LOD v1.6.unitypackage
2018-04-17
VS调试利器autoexp.dat
2017-07-05
Visual assist x trial key破解补丁
2017-06-24
Visual Assist X 2114
2017-05-18
Avatar换装系统
2017-03-21
Fast Shadow Receiver
2017-03-07
Build Report Tool 自述文件
2017-03-01
Unity资源热更新之AssetBundle
2016-12-07
Unity3D-XML与JSON导出还原场景
2016-10-26
Unpause.zip
2019-05-17
Unity Shader - Sprite Shader之简单抠图
2018-05-30
Unity Shader - 后处理:高斯模糊
2018-05-25
Unity Shader-后处理:简单均值模糊
2018-05-23
Unity Shader - 后处理:简单的颜色调整(亮度,饱和度,对比度)
2018-05-23
Unity Shader - 隐身效果
2018-05-23
Unity Shader-死亡溶解效果
2018-05-22
UnityShader 法线贴图(Normal Map)与视差贴图(Parallax Map)
2018-05-21
UnityShader 浮雕凹凸贴图BumpMap与法线贴图NormalMap的原理及其区别
2018-05-20
UnityShader 渲染队列,ZTest,ZWrite,Early-Z
2018-05-18
UnityShader 边缘光(静态、动态及遮罩)效果
2018-05-16
UnityShader 漫反射(兰伯特与半兰伯特光照模型-逐顶点和逐像素光照)
2018-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人