2019
11-16
	
            11-16
Unity3D研究院之使用SRP计算准确overdraw(一百零九)
 最近在研究如何把overdraw统计成准确的数据值,让美术同学能直观的知道自己做的特效、场景、角色到底有多费,再加上好久没有写文章了,自己也有点心得今天就分享给大家并且希望可以后面一起讨论。
首先Unity的overdraw是不准确的,如下图所示,我们放两个不透明的物体,在SceneView切....        Read More >
		最近在研究如何把overdraw统计成准确的数据值,让美术同学能直观的知道自己做的特效、场景、角色到底有多费,再加上好久没有写文章了,自己也有点心得今天就分享给大家并且希望可以后面一起讨论。
首先Unity的overdraw是不准确的,如下图所示,我们放两个不透明的物体,在SceneView切....        Read More >
     专注移动互联网,专注Unity3D游戏开发
        专注移动互联网,专注Unity3D游戏开发
    
    
    
 贴图导入unity后会自动设置成压缩格式,它会先判断贴图是否有透明通道。
Android:不带透明通道压缩成ETC1,带透明通道压缩成ETC2,不被4整除fall back到RGBA32
IOS: 不带透明通道压缩成RGB PVRTC,带透明通道压缩成RGBA PVRTC ,不是2的整数....        Read More >
		贴图导入unity后会自动设置成压缩格式,它会先判断贴图是否有透明通道。
Android:不带透明通道压缩成ETC1,带透明通道压缩成ETC2,不被4整除fall back到RGBA32
IOS: 不带透明通道压缩成RGB PVRTC,带透明通道压缩成RGBA PVRTC ,不是2的整数....        Read More >
     前段时间用Stencil实现了一套裁切,但是Stencil原理只能是裁或者不裁,这样是无法实现像NGUI这样的软裁切功能。之前的笔记在这里 https://www.xuanyusong.com/archives/4562
如下图所示,我们用Rect2DMask组件同时软裁切3D模型和Image....        Read More >
		前段时间用Stencil实现了一套裁切,但是Stencil原理只能是裁或者不裁,这样是无法实现像NGUI这样的软裁切功能。之前的笔记在这里 https://www.xuanyusong.com/archives/4562
如下图所示,我们用Rect2DMask组件同时软裁切3D模型和Image....        Read More >
     Unity2017是明确不支持GPU Instancing的,如果在材质上勾选了enable GPU Instancing后,如下图所示,在Frame Debugger中,我们能清楚的看到所有的游戏对象没有合批,提示Objects are lightmapped。
所以为了让Unity....        Read More >
		Unity2017是明确不支持GPU Instancing的,如果在材质上勾选了enable GPU Instancing后,如下图所示,在Frame Debugger中,我们能清楚的看到所有的游戏对象没有合批,提示Objects are lightmapped。
所以为了让Unity....        Read More >
     烘焙Lightmap以后unity会自动给参与烘焙的所有mesh添加uv2的属性,例如,三角形每个顶点都会有UV2它记录着这个每个顶点对应Lightmap图中的UV值,这样拥有3个顶点的三角形面就可以通过UV2在Lightmap中线性采样烘焙颜色了。
LightmapIndex:
所以每....        Read More >
		烘焙Lightmap以后unity会自动给参与烘焙的所有mesh添加uv2的属性,例如,三角形每个顶点都会有UV2它记录着这个每个顶点对应Lightmap图中的UV值,这样拥有3个顶点的三角形面就可以通过UV2在Lightmap中线性采样烘焙颜色了。
LightmapIndex:
所以每....        Read More >
     合并mesh的功能比较常见,可以运行时合也可以编辑模式下提前合并,但是至少需要注意两点。
1.考虑lightmap,合并mesh以后会将lightmap的信息写入uv2,如果有多张lightmap需要传入正确的index,所以参与合批的mesh需要保证处于同一index的lightmap中。
....        Read More >
		合并mesh的功能比较常见,可以运行时合也可以编辑模式下提前合并,但是至少需要注意两点。
1.考虑lightmap,合并mesh以后会将lightmap的信息写入uv2,如果有多张lightmap需要传入正确的index,所以参与合批的mesh需要保证处于同一index的lightmap中。
....        Read More >
     最近我在UWA的学堂写了两篇收费文章,都是介绍UGUI的。
从2014年UGUI刚出来的时候我就毫不犹豫的放弃的NGUI,原因是UGUI有两方面是彻底碾压NGUI的
1.开发的时候不用考虑图集规划,(NGUI在后期调整图集,每个界面都要改一遍真是痛苦)
2.UGUI在C++里合并的....        Read More >
		最近我在UWA的学堂写了两篇收费文章,都是介绍UGUI的。
从2014年UGUI刚出来的时候我就毫不犹豫的放弃的NGUI,原因是UGUI有两方面是彻底碾压NGUI的
1.开发的时候不用考虑图集规划,(NGUI在后期调整图集,每个界面都要改一遍真是痛苦)
2.UGUI在C++里合并的....        Read More >
     AssetBundle.LoadFromMemory基本上是无法在手机上用的,因为要多占一份内存,所以大多Unity项目都不进行资源加密。
Unity2017.2提供了一个新的API AssetBundle.LoadFromStream,通过名字就可以知道它是流加载,那么就不会像AssetBund....        Read More >
		AssetBundle.LoadFromMemory基本上是无法在手机上用的,因为要多占一份内存,所以大多Unity项目都不进行资源加密。
Unity2017.2提供了一个新的API AssetBundle.LoadFromStream,通过名字就可以知道它是流加载,那么就不会像AssetBund....        Read More >
     最近在优化项目,发现字符串拼接的堆内存非常大,而且非常频繁。
大概原因如下
1.字符串就是char[] 长短发生变化必然要重新分配长度,以及拷贝之前的部分,产生GC
2.字符串+=进行拼接会产生装箱,生成GC
3.Append传入值类型数据,它会调用ToString方法,需要new stri....        Read More >
		最近在优化项目,发现字符串拼接的堆内存非常大,而且非常频繁。
大概原因如下
1.字符串就是char[] 长短发生变化必然要重新分配长度,以及拷贝之前的部分,产生GC
2.字符串+=进行拼接会产生装箱,生成GC
3.Append传入值类型数据,它会调用ToString方法,需要new stri....        Read More >
     前几天公司有个项目,由于美术做了很多背景图并且还大量的使用了渐变过度,导致压缩图片后效果非常差,而且换成RGBA16效果也不理想,如果用RGBA32那就太浪费效率了。后来发现TexturePacker具有添加图片抖动的方式,由于项目组使用了UGUI手动一个个设置这太麻烦了,所以就做了个工具。如下图所....        Read More >
		前几天公司有个项目,由于美术做了很多背景图并且还大量的使用了渐变过度,导致压缩图片后效果非常差,而且换成RGBA16效果也不理想,如果用RGBA32那就太浪费效率了。后来发现TexturePacker具有添加图片抖动的方式,由于项目组使用了UGUI手动一个个设置这太麻烦了,所以就做了个工具。如下图所....        Read More >
     最近在MAC下需要频繁构建DLL,并且还需要调试,写篇文章记录一下过程,如图所示,先创建一个Library工程。
 
右键EditReference把UnityEngine.DLL引入进来,并且取消选择Local Copy。不然后面会把UnityEngine.dll也拷....        Read More >
		最近在MAC下需要频繁构建DLL,并且还需要调试,写篇文章记录一下过程,如图所示,先创建一个Library工程。
 
右键EditReference把UnityEngine.DLL引入进来,并且取消选择Local Copy。不然后面会把UnityEngine.dll也拷....        Read More >
     UGUI的标志性函数Canvas.SendWillRenderCanvas,我们只知道网格进行了重建,但是并不知道是哪个Canvas,由于哪个UI元素引起了Canvas网格的重建。比如,修改RectTransform的属性、Text文本内容、更换Sprite、颜色、都会引起网格重建,通过观察UGUI....        Read More >
		UGUI的标志性函数Canvas.SendWillRenderCanvas,我们只知道网格进行了重建,但是并不知道是哪个Canvas,由于哪个UI元素引起了Canvas网格的重建。比如,修改RectTransform的属性、Text文本内容、更换Sprite、颜色、都会引起网格重建,通过观察UGUI....        Read More >