自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 解决Batching Static静态合并网格的容量问题(打包包体会变大)

https://blog.csdn.net/liweizhao/article/details/81937729最近我一直在解决项目里面打包AssetBundle的容量问题,还是比较有成果。包体容量从原来的800M减少到400M左右。其中一个可以减少容量的地方,是Batching Static。这其实是有历史原因的,由于上一个项目的失败,这个项目被老板指定使用其他某个项目组的框架代码来开发。由于这个框架是使用LoadLevel的方法来加载整个场景的,所以最后会把整个Scene文件打包成AssetBun

2020-08-04 17:49:13 19

转载 Unity2d引入新功能SpriteAtlas,Sprite新的图集方式

在Unity 2017.1.0f3中引入了 SpriteAtlas,一个新的图集打包方式。官方文档:https://docs.unity3d.com/2017.1/Documentation/Manual/SpriteAtlas.htmlhttps://docs.unity3d.com/2017.1/Documentation/ScriptReference/U2D.SpriteAtlas.html之前针对UGUI打包图集,有:SpritePacker。现在的SpriteAtl...

2020-08-04 17:32:49 13

转载 Unity3d LOD 使用以及 Bias精度设置

用Unity 许久了,经历过一个ARPG、一个战斗卡牌,这一次要准备做MMO,又有很多新的东西要学。MMO对于其它游戏,首先让人纠结的就是大地图的问题,有很多优化手段,一点一点来做。之前是听过LOD的,就先来学习LOD。LOD是Level Of Detais 的简称,多细节层次。在游戏场景中,根据摄像机与模型的距离,来决定显示哪一个模型,一般距离近的时候显示高精度多细节模型,距离远的时候显示低精度低细节模型。转自http://blog.csdn.net/huutu http://www.

2020-08-04 16:09:00 15

转载 Unity3D-游戏场景优化之遮挡剔除(Occlusion Culling)的使用

在大型3D游戏场景中,如何优化游戏性能是非常重要的一步。一般遮挡剔除是非常常用的。接下来我们看看如何使用遮挡剔除。假设这是一个游戏场景。下面这是相机的视口,相机的视觉是看不到很大立方体后面的那些小的立方体。在运行游戏的过程中,我们为了提高游戏的性能,我们不希望渲染相机看不到的物体。接下来就使用遮挡剔除(Occlusion Culling) 来进行优化。1.首先将场景中的物体设置为静态2.选择Windows -> Occlusion Culling...

2020-07-31 16:38:50 22

转载 【UGUI】利用CanvasRenderer.cull来实现低消耗界面显隐

用SetActive或者设置enabled隐藏UI界面的缺陷很多人都讲过了,无非是"无谓的操作"和GC Alloc的问题。我这里多说一句,设置enabled最要命的地方其实是,UI基类Graphic会在OnEnabled,OnDisable,还有OnTransformParentChanged时执行SetAllDirty(),这个操作几乎等同于全部重建。我并不理解这样做的理由,虽然在禁用状态下无法接受Mono事件,无法根据属性变化更新界面,重新激活的时候确实需要一次ReBuild,但并不需要直接设置脏标记啊

2020-07-31 16:24:52 18

转载 unity Animator Override Controller的使用

这里给大家简单介绍下Animator Override Controller。  Animator Override Controller是用来配合Animator Controller使用的,它让Animator Controller变得更加实用,可以让不同的使用实例的在同一状态播放不同的动作,但保留原有的结构、参数和逻辑。  下图是一个简单的Animator Controller:  设置了一个Trigger参数“attack”,有两个状态idle和attack,当“attack”为tr

2020-07-31 16:02:43 31

转载 使用AnimatorControllerOverride的坑

http://www.manew.com/thread-112097-1-1.html大神们,unity animator使用overrideController替换原有状态机里的动画时 ,状态机会自动返回到初始状态, 这样就好有一帧卡顿,请问有什么解决办法?例如,第一次给overrideController添加动画A,overrideController["A"]= A,其中A动画长度为5秒,当A播放到3秒时,我给overrideController添加动画B,overrideControlle...

2020-07-31 15:44:20 34

转载 Animator Override Controller学习及性能测试

本文由博主(YinaPan)原创,转载请注明出处: http://www.cnblogs.com/xsln/p/Animator_Override_Controller.html一、Animator Override Controller简介:  动画覆盖器是一类asset,它允许你扩张已经存在的动画控制器,用特定的animations,但是需要保留原始的结构、参数和逻辑;这就允许你创建同一个基础状态机的多个变种,这些变种使用不同的animations。  例如:你有一系列的npc生活在游戏

2020-07-31 15:42:40 17

转载 Unity3D Event System提供的事件详解

编号 - 接口 - 必须实现的方法 - 调用(应用)时机IPointerEnterHandler - OnPointerEnter - 当鼠标移入一个物体时调用 IPointerExitHandler - OnPointerExit - 当鼠标退出一个物体时调用 IPointerDownHandler - OnPointerDown - 当鼠标在物体上并按下时调用 IPointerUpHandler - OnPointerUp - 当鼠标按键释放时调用(在原先按下时的物体上执行) IPointe

2020-07-31 15:40:27 36

转载 Unity中Canvas及三种渲染模式

1. 什么是Canvas使用UGUI来进行UI开发,离不开Canvas组件,所有的 UI 元素,要么自己包含 Canvas 组件,要么是 Canvas 组件所在 GameObject 的子节点。2. 如何创建 Canvas你在 Hierarchy 视图创建任何一个 UI 元素(比如Image)都会自动生成一个 Canvas 作为它的父节点。你也可以可以直接创建一个 Canvas,然后添加其他 UI 元素作为其子节点。3. Canvas 组件的RenderMode 参数Canvas 组件的

2020-07-30 22:24:49 40

转载 Unity2017中Timeline的简单使用方法

以下为旧版本TimeLine,新版本功能介绍可以看这里Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体、声音、粒子、动画、特效、自定义Playable以及子Timeline等多种资源进行整合,从而能够较方便的生成效果很棒的场景动画,同时可以通过Unity的Recorder资源包录制较为完整的视频并导出。1.Timeline界面简单介绍在Unity2017中,点击Window->Timeline即可调出Timeline面板。如下图所示:

2020-07-30 20:35:27 33

转载 Unity3d 功能:Tile Palette

https://docs.unity3d.com/Manual/Tilemap-Palette.htmlTile PaletteCreate Palettes with selected Tiles in the Tile Palette window, which are used to paint on Tilemaps. Open the Tile Palette window from the menu: Window > 2D > Tile Palette.Creat

2020-07-30 20:32:49 34

转载 Unity3d功能:Painting on Tilemaps

https://docs.unity3d.com/Manual/Tilemap-Painting.htmlPainting on TilemapsThe following details the steps and tools for painting Tileson a Tilemap. However, if you are painting an Isometric Tilemap, refer to Creating a Tile Palette for an Isometric T

2020-07-30 20:30:43 19

转载 Unity3D中Isometric Tilemap功能实践

前言最近出于兴趣想自己做一个2D的游戏,因为有着C#的基础,所以决定使用Unity3D来做。之前对于Unity3D其实了解不多,不过看了一些Unity3D的视频和官方文档后,暂时做起来也没遇到什么太大的困难。本篇博客要说的是Unity 2018.3新增的一个东西——Isometric TileMap,一般用于做一个2.5D的地图。这个东西官方文档讲的并不详细,并且有些配置完全没有说出来,导致始终无法达到预期效果。国内的各种中文社区和问答网站都没有这方面的资料,最后还是在Unity的英

2020-07-30 20:25:44 33

转载 Unity3d的Holographic Emulation

VR技术相关https://docs.unity3d.com/560/Documentation/Manual/windowsholographic-emulation.htmlHolographic EmulationHolographic Emulation allows you to prototype, debug, and run Microsoft HoloLens projects directly in the Unity Editor rather than building

2020-07-30 20:24:01 29

转载 Unity3d 的Look Dev功能

Look DevIntroductionLook Dev is an experimental image-based lighting tool that allows you to check and compare different Assets through a viewer to ensure they are correctly authored for various lighting conditions. It also allows you to debug Assets w

2020-07-30 20:21:18 9

转载 Unity3D之DrawCalls、Batches和SetPassCalls的关系

Unity3D性能优化——渲染篇渲染优化在了解优化渲染前,我们需要了解在unity中,每一帧的渲染CPU和GPU都做了些什么:1)CPU检查场景中每个对象,决定他们是否应该被渲染。(这些对象只有满足一定的条件才会被渲染。)2)CPU收集即将被渲染的对象信息,并把这些信息分类为渲染指令(也就是draw calls,我们在之前的文章中也有提到,Draw Call实际上就是一个命令)。一个draw call包含网格数据以及网格如何被渲染。在某些场景,共享设置的一些对象可能会被合并为一个dra.

2020-07-29 21:01:53 35

转载 Unity3D animator动画的性能问题

角色数目 ----同屏角色数目高耗时函数 ----Animator.Update -----MeshSkinning.Update -----Camera.Render角色数目 影响整体耗时 面片数目 Camera.Render(PutGeometryJobFence) 渲染耗时 骨骼数目 Animators.Update(DirtySceneObjects)动画相关计算 MeshSkinning.Update( .

2020-07-29 20:04:18 77

原创 GPU Instancing测试

https://www.xuanyusong.com/archives/4488如果是不动的物体勾选static静态合并批次(40-50帧率)自定义Shader中勾选Enable GPU Instancing帧率竟然还不如静态合批次(帧率 30-40)所以,静态不动的物体就没必要用上面的方法了,于是我又测试了Graphics.DrawMeshInstanced()方法,终于满意了。(稳定60帧)如果直接勾选Enable GPU Instancing进行渲染个人测试感觉效率的确不如静态.

2020-07-28 14:51:17 30

转载 Unity3D研究院GPU Instancing测试

GPU instancing 很早就支持手机了(Android只支持Opengl ES 3.0),但是我一直不知道将它应用到哪里,刚好最近在调研这个我对它又重新测试了一下。如果是不动的物体勾选static静态合并批次(40-50帧率)自定义Shader中勾选Enable GPU Instancing帧率竟然还不如静态合批次(帧率 30-40)自定义Shader 1 2 3 4 5 6 7 8 9 1

2020-07-27 20:15:30 23

转载 Unity GPU Instancing的使用尝试

似乎是在Unity5.4中开始支持GPU Instacing,但如果要比较好的使用推荐用unity5.6版本,因为这几个版本一直在改。这里测试也是使用unity5.6.2进行测试在5.6的版本里,Instancing不再是一个单独的shader,而是一个开关。如果使用Instancing功能需要开启,否则调用相关接口时会报错默认情况下,多个一样的模型会被动态批次合并优化掉,动态批次合并有很多种情况不可用,其中一种就是镜像的情况。这里用镜像后的实例模型和GPU Instancin.

2020-07-27 20:12:34 22

转载 Unity加载模块深度解析(纹理篇)

在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”、“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等。在我们看来,该模块的耗时是目前引擎中仅次于渲染的第二大模块。因此,我们认为非常有必要来跟大家分享一下目前加载模块的主要性能问题。我们通过对提交到www.uwa4d.com网站的大量项目进行分析,认为目前加载模块中最为耗时的性能开销可以归结为以下几类:资源加载、资源卸载、Object的实例化和代码的序列化等。今

2020-07-23 17:32:31 21

转载 关于Unity中的资源管理,你可能遇到这些问题

关键字AssetBundle资源制作 纹理\网格\材质\Shader\音频\动画Lightmap一、AssetBundle 相关Q1:Unity中的SerializedFile是怎么产生的?请问用Unload(false)可以清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了。而且我把图片都打成了Bundle,然后读取出来,图片的大小应该是超过了这个SerializedFile的大小的?SerializedFile是AssetBundle加载时产生的序列化信息,一般为LoadF

2020-07-23 16:20:31 77

转载 Unity3D 在Game窗口下查看Overdraw视图

overdraw简单来说,就是一个像素在荧幕被绘制了多次。在像素处理中,overdraw是最常见的性能瓶颈之一。上个项目中优化过,全屏UI渲染时,游戏主场景在UI后重复绘制,导致完全没有必要的Overdraw。引用冯乐乐的文章中的一句话Unity提供了查看overdraw的视图,在Scene视图的RenderMode->Overdraw。当然这里的视图只是提供了查看物体遮挡的层数关系,并不是真正的最终屏幕绘制的overdraw。也就是说,可以理解为它显示的是如果没有使用任何深..

2020-07-23 14:55:56 26

转载 Unity加载模块深度解析(网格篇)

资源加载性能测试代码与上篇所提出的测试代码一样,我们对于其他资源的加载性能分析同样使用该测试代码。我们将每种资源均制作成一定大小的AssetBundle文件,并逐一通过以下代码在不同设备上进行加载,以期得到不同硬件设备上的资源加载性能比较。测试环境引擎版本:Unity 5.2版本测试设备:三台不同档次的移动设备(Android:红米2、红米Note2和三星S6)网格资源网格资源与纹理资源一样,在加载时同样会造成较高的CPU占用,且其加载效率由其自身大小(网格数据量)决定。因此,我们通过选

2020-07-22 20:37:42 22

转载 mali gpu debugger

https://community.arm.com/developer/tools-software/graphics/b/blog/posts/accelerating-mali-gpu-analysis-using-arm-mobile-studio?_ga=2.63595119.1707627554.1563937012-2006915827.1543458513数据很全很开心 下面的问题就是 怎么能连手机跑起来。。。这里带宽数据给的好详细啊load/storetexturet..

2020-07-22 20:11:49 22

转载 Unity动态网格简化算法

在游戏开发中,我们有时需要对美术同学给出的模型进行简化。目的是在减少面数的同时,尽可能的维持模型的外观。这种技术可以用在LOD(Levels of Details)上,当模型与摄像机的距离大于一定值之后,使用面数较少的模型来代替高模,这样可以减少GPU带宽消耗和渲染压力。简化分为三种:静态的; 动态的; 视角依赖的。通常情况下,我们会让美术提供面数不同的几个模型,或者我们使用工具对高模进行减面并存成多个Mesh,然后在游戏运行的时候,根据模型与摄像机的位置关系,动态的替换Mesh。这是一种静态

2020-07-22 20:10:31 33

转载 CPU架构及移动处理器芯片厂商盘点

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。目前市面上的CPU指令集分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。CPU架构主要有:X86/Atom、ARM、MIPS等等1)X86则是基于复杂指令集(CISC

2020-07-22 20:02:48 42

转载 好插件让你事半功倍!【资源篇】

工欲善其事必先利其器。在Unity官网的Asset Store上有不少给力的资源插件,能帮助我们减少人力资源消耗的同时,更快更好地驾驭引擎。今天我们就从善用资源的角度,推荐两款Unity热门插件,并介绍其使用技巧。Mesh Baker我们在项目开发的时候经常会大量使用大规模的Mesh,导致Draw Call过高。而Mesh Baker扮演了网格烘焙器的角色,其工作原理是将网格和材质合并,从而降低渲染的Draw Call。下面,我们就来谈谈使用方法:Texture Packing我们常

2020-07-22 16:58:55 21

转载 Unity3D白皮书(一)模型导入设置

在研究一个东西的时候,我们首先要问三个问题?What?什么是导入设置?我们可以在资源文件的Inspector界面看到这个文件的相关设置,导入设置本质上是AssetImporter或其衍生类。Why?为什么我们要使用导入设置?我们导入的资源大部分是由第三方软件生成的,而这些资源需要指定一些参数或者附加一些信息才能被U3D使用或者更好的使用。How?导入设置是如何产生效果的?在资源导入的同时,会生成与之对应的meta文件,meta文件除了保存资源的GUID和meta文件的创建时间外,还.

2020-07-20 11:46:54 27

转载 Unity性能优化之编辑器检查——模型

优化选项Read/Write Enabled尽量关闭:可能存在内存拷贝 Optimaze Mesh尽量开启:Unity会自动优化mesh Import BlendShapes尽量关闭:Unity制作动画的变形器,一般不用 Normals &Tangents 尽量选None 模型压缩实现编辑器自动检查public class MyModelProcessor: AssetPostprocessor{ public void OnPreprocessModel()...

2020-07-20 11:27:05 22

转载 Unity+模型/动画的优化方案

导入网格设置<图一,缺省的网格设置>【选项释义】[Meshes]ScaleFactor:为了补偿unity和其它三维建模软件间的单位差异,没有特殊需求的话设为1就可以了。MeshCompression:网格压缩,亲测质量差距比较大,不太建议开启。Read/Write Enabled:若开启,顶点可被实时修改,建议没有修改需求的模型关闭此选项。注意,ParticalSystem -> Renderer -> RenderMode如果为Mesh,则使用到的Mesh需要打开这个选项。否

2020-07-16 21:07:57 35

转载 Unity加载模块深度解析之网格篇

资源加载性能测试代码与上篇所提出的测试代码一样,我们对于其他资源的加载性能分析同样使用该测试代码。我们将每种资源均制作成一定大小的AssetBundle文件,并逐一通过以下代码在不同设备上进行加载,以期得到不同硬件设备上的资源加载性能比较。测试环境引擎版本:Unity 5.2版本测试设备:三台不同档次的移动设备(Android:红米2、红米Note2和三星S6)网格资源网格资源与纹理资源一样,在加载时同样会造成较高的CPU占用,且其加载效率由其自身大小(网格数据量)决定。因此,我们通过选

2020-07-16 20:54:49 22

转载 Object.FindObjectsOfType 查找Type物体,unity3d的泛型单利模式

static function FindObjectsOfType (type : Type) : Object[] 返回Type类型的所有激活的加载的物体列表,它将返回任何资源(网格,纹理,预设,...)或未激活的物体。请注意这个函数是非常慢的。不推荐在每帧使用这个函数,大多数情况下你可以使用单例模式代替。由上面的函数引出unity3d的泛型单利模式 在Unity中,单一模式的一个很好的替代方案是使用ScriptableObjects作为全局变量的一种类型。来自Schell Game...

2020-07-16 20:49:58 40

转载 Unity实用案例之——动画压缩

关于动画文件的压缩,其实前辈们已经讲得非常详尽了:http://www.codershu.com/2017/06/14/UnityOptimizeAnimationClip/http://gad.qq.com/article/detail/15869写这篇文章一是为了弥补原文已失效的附件,二是为了更新已过时的API。不多说,直接上代码:这里只介绍两种压缩方案:删减帧:private static void ReduceScaleKey(AnimationClip clip, string

2020-07-16 20:47:08 34

转载 Unity资产,特殊文件夹以及重要路径

本文将介绍Unity中的资产,Unity中的特殊文件夹,Unity的一些路径对应各个平台上的具体路径。 第一部分就是介绍资产Assets——哪些是Assets,Assets类型具体有哪些,如何在编辑器中搜索特定的Assets,与Assets息息相关的meta文件,对于从外界导入的Assets怎么进行流程化处理,如何设置对于一些二进制的资产进行序列化。 第二部分是Unity工程目录下的一些有特定用处特殊命名的文件夹。 第三部分介绍 Application.data...

2020-07-16 20:43:13 27

转载 GPU instancing介绍

从Unity5.4开始,多了一个叫做GPU instancing的功能。这个功能是做什么用的呢?下面做一个小例子来说明一下:还是之前做 MaterialPropertyBlock的例子,在屏幕上面做了很多的cube,然后随机给颜色,使用MaterialPropertyBlock的方式设置颜色值。可以看到,正常情况下,在改变完颜色之后,Batches有75个,而SetPass calls有75个。下面换成GPU instancing的做法,同样的效果,可以看看数据:和之前完全一..

2020-07-15 20:15:10 36

转载 Unity3d Camera的Clear Flags、Culling Mask和Depth三个属性的理解

先说说 Clear Flags:Skybox:把颜色缓冲设置为天空盒,并完全清空深度缓冲Solid:和天空盒一样,只是把颜色缓冲设置为纯色Depth only:这个选项会保留颜色缓冲,但会清空深度缓冲Don’t Clear:不清除任何缓冲这个给我的感觉就是,空(没有物体)的部分用什么来填充,如果是Skybox,就用天空盒填充,如果是Solid,就用纯色填充,如果是Depth only取决于其他相机的深度,未渲染部分显示什么由深度小于本摄像机的内容来决定。下面放几张图片作为例子:我们通过看S

2020-07-14 20:11:09 30

转载 Unity移动平台下的烘焙使用及优化

前言移动平台下场景制作的规模越来越大,开放视角的3D大世界场景,对地图大小、可视距离的要求越来越高,随之带来了地形尺寸变大、场景物件种类变多、物件的模型面数和数量增长,对美术效果上的要求也趋近于主机和PC端游戏。Realtime Global Illumination 在移动平台下还不能随意使用,美术场景的光照主要还是以 Baked GI 为主,随着Unity版本的升级,场景烘焙流程也迭代过几个版本,但是仍然暴露出了越来越多的问题。在Unity官方的技术支持下我们发现在烘焙流程中疏忽了一些很重要的环

2020-07-14 19:48:31 32

转载 UGUI 降低填充率技巧两则

Fill Rate(填充率)是指显卡每帧每秒能够渲染的像素数。在每帧绘制中,如果一个像素被反复绘制的次数越多,那么它占用的资源也必然更多。目前在移动设备上,FillRate 的压力主要来自半透明物体。因为多数情况下,半透明物体需要开启 Alpha Blend 且关闭 ZTest和 ZWrite,同时如果我们绘制像 alpha=0 这种实际上不会产生效果的颜色上去,也同样有 Blend 操作,这是一种极大的浪费。因此,今天我们为大家推荐两则UGUI 降低填充率的技巧,希望大家能受用。这是侑虎科技第50篇原

2020-07-13 21:23:03 28

提示
确定要删除当前文章?
取消 删除