Unity用户手册详解
文章平均质量分 89
Unity用户手册的读书笔记
鹅厂程序小哥
与你一起写程序 | 知乎:鹅厂程序小哥 | 微信公众号:鹅厂程序小哥
展开
-
Unity用户手册-垃圾回收
可以把GC想象成一个描述程序对象之间互相引用的算法。如果在程序中一个子对象被其父对象引用(在原生代码中使用的是指针),那他们的关系图如下:当GC对一个进程的内存进行扫描,它会尝试寻找没有父亲的对象。如果找到,就对他们进行回收以便释放内存给其他需求使用。当然,其实大部分的对象都有父对象,因此GC需要确切的知道哪些对象是重要的父对象,这些对象是你的程序中真正正在使用的。用GC的术语来说,这些对象叫做“根”。下面的例子展示了两种不同的情况:在上面的图片中,Parent2没有根对象,因此GC可以原创 2021-01-18 10:36:37 · 829 阅读 · 0 评论 -
Unity用户手册-AssetBundle
AssetBundle什么是AssetBundle?AssetBundle实际上是一个资源管理包。AssetBundle 包含了两个部分:数据头以及数据段。数据头内包含了 AssetBundle 的元数据信息,比如它的标识符、压缩类型、manifest 等等。这里的 manifest 是一个以 Object 名称作为键的查找表,用以指定 AssetBundle 中给定 Object 的位置...原创 2019-03-12 01:55:07 · 354 阅读 · 0 评论 -
Unity用户手册-Unity与Android、iOS互相调用
C#是以Assembly(汇编集)为一个基本单位组织代码的,dll就是一个assemble,dll之间有加载依赖顺序。dll是windows平台上的动态库,而so是linux平台上的动态库,最后.a是IOS平台的库文件。Windows平台1、外部导入C# dll导入Unity中,放到Assets任意目录下,可以直接使用2、PC平台调用C/C++代码C++代码...原创 2019-03-12 01:54:52 · 1356 阅读 · 0 评论 -
Unity用户手册-Quality Settings
Quality Settings属性:activeColorSpace激活的色彩空间(只读),线性空间,Gamma空间。anisotropicFiltering全局各向异性过滤模式,纹理的各向异性等级(当相机视野与场景的角度很小时,调整纹理的精度,各向异性等级越大,纹理精度越大)。antiAliasing消除锯齿的值(实际上是每个像素的采样数),设置抗锯齿的...原创 2019-03-11 12:08:29 · 2005 阅读 · 0 评论 -
Unity用户手册-Atlas图集
Atlas图集将多张图片打包到一张纹理上的技术叫Atlas。原本图片一张张送到GPU渲染,如果打包到一张纹理上,送到GPU进行渲染,这样就只需要1次DrawCall。应用Atlas策略设计UI时要考虑重用性,如一些边框、按钮等,这些作为共享资源,放在1~3张大图集中,称为重用图集; 其它非重用UI按照功能模块进行划分,每个模块使用1~2张图集,为功能图集; 对于一些UI,如果...原创 2019-03-11 12:00:09 · 415 阅读 · 0 评论 -
Unity用户手册-Mesh合批
Mesh合批把很多静止的模型,标记为Batching Static,原本需要把模型一个个送到GPU渲染,Unity会把相同材质相同纹理相同Shader的模型合批成一个大的模型,送到GPU进行渲染,这样就减少DrawCall。可以调用Mesh.CombineMeshes方法,创建CombineInstance[]数组,进行合批。Static Batching要求:必须使用相同的材质...原创 2019-03-11 11:57:52 · 1444 阅读 · 0 评论 -
Unity用户手册-IL2CPP
什么是IL2CPP?从技术层面上来说,我们说的IL2CPP包含了两部分:一个进行 预先编译的编译器(译注:ahead-of-time,又叫AOT,以下一律使用AOT缩写) 另外一个部分就是对虚拟机提供支持的运行时库。AOT编译器将由.NET 输出的中间语言(IL)代码生成为C++代码。运行时库则提供诸如垃圾回收,与平台无关的线程,IO以及内部调用(C++原生代码直接访问托管代码结构...原创 2019-03-11 11:49:47 · 871 阅读 · 0 评论 -
Unity用户手册-Coroutine协程函数
Coroutine协程函数本质上是一个返回类型IEnumerator声明的函数,并且yield return语句包含在函数的某个地方。yield return语句,会执行暂停,并在下一帧从暂停处开始继续执行。对复杂逻辑进行分帧,可以在主线程内非堵塞的运行一个持续性的逻辑。实现原理:C#编译器会帮我们创建一个协程的类,而在开启一个协程时就会创建对应的对象,这个对象用来维护多次调...原创 2019-03-11 11:34:53 · 377 阅读 · 0 评论 -
Unity用户手册-EditorWindow
Unity Editor扩展概览 unity editor是一个通用的编辑器,提供了unity内部对象的创建,预览,编辑的功能及可视化界面。但对于特定类型的游戏开发可能还不能完全满足需求,还要根据程序,策划和美术的需求来进行扩展。常用的一些扩展包括打包界面,特定游戏对象的编辑界面,技能编辑器界面,自定义的场景编辑界面,美术资源导入批量设置等等。unity提供了丰富的接口来帮助开发者定制需求的...原创 2019-03-11 10:23:54 · 485 阅读 · 0 评论 -
【详细解析版】Unity UGUI Mask组件实现原理
Masking is implemented using the stencil buffer of the GPU.即Mask是利用了GPU的模板缓冲来实现的,关于模板,打个简单的比方,就像一个面具,可以挡住一部分“脸”的显示一样。Mask的关键代码其实只有一行,如下(为方便理解,对代码做了简化处理):var maskMaterial = StencilMaterial.Add(ba...原创 2018-12-19 20:42:52 · 18624 阅读 · 8 评论 -
Unity用户手册-UGUI合批
UGUI合批合批过程是指Canvas合并UI元素的网格,并且生成发送给Unity渲染管线的命令。Canvas使用的网格都是从绑定在Canvas上的CanvasRenderer获得,但是不包含子Canvas的网格。UGUI的层叠顺序是按照Hierarchy中的顺序从上往下进行的,也就是越靠上的组件,就会被绘制在越底部。所有相邻层的可合批的UI元素(具有相同材质和纹理),就会在一个DrawCall...原创 2019-02-26 10:36:16 · 1739 阅读 · 0 评论 -
Unity用户手册-正向渲染和延迟渲染
Forward Rendering(正向渲染)发生在渲染管线的顶点处理阶段,会计算所有的顶点的光照。全平台支持。规则一:最亮的几个光源会被实现为像素光照 规则二:然后最多4个光源会被实现为顶点光照 规则三:剩下的光源会被实现为效率较高的球面调谐光照(Spherical Hamanic),这是一种模拟光照规则一补充说明:最亮的那盏光一定是像素光照 Light的Rend...原创 2019-02-25 13:47:57 · 995 阅读 · 0 评论 -
Unity用户手册-Texture
TexturePower of 2 (贴图宽高要是2的幂的长度):根据不同平台,选择合理的纹理压缩格式,iOS选择RGBA ASTC 4* 4 block(从iOS9开始支持,显示效果更好,不需要把图片设置成方形),Android选择RGBA ETC 2 8bitsAndroid平台:如果有一个贴图大小为200 * 512,会被变成256 * 512。如果贴图大小为257 *...原创 2019-02-25 12:42:21 · 641 阅读 · 0 评论 -
Unity用户手册-Shader
ShaderGPU上的渲染程序。渲染管线的流程:几何阶段:顶点着色器(Vertex Shader):主要工作是坐标变换,逐顶点光照和输出后续阶段所需的数据。所有的几何体,以顶点的形式,先经过顶点着色器,进行顶点的坐标转换,把顶点坐标从模型空间转换到齐次裁剪空间,正向渲染(Forward Render)会对顶点进行光照计算,得到顶点的光照。VBO(Vertex Buf...原创 2019-02-25 12:41:23 · 572 阅读 · 0 评论 -
Unity用户手册-NavMesh导航系统
NavMeshNavMesh基于A*算法的扩展,基于场景的可行走和不可行走区域,把场景分成众多不规则的三角形,计算某两个点所在的三角形Mesh的距离,根据区域不同的Cost,采用广度优先的遍历,找到一条最短路径。广度优先搜索(Breadth First Search,简称BFS)从某个节点出发,首先访问这个节点,然后找出这个节点的所有未被访问的邻接点(或是孩子节点),访问完这些邻接...原创 2019-02-25 12:33:29 · 916 阅读 · 0 评论 -
Unity用户手册-Camera
Camera属性:Clear Flag:确定屏幕的哪些部分将被清除。Skybox:天空盒,擦除上一帧的颜色和深度并先用Skybox渲染在最底层,Depth大的Camera,将会清除Depth小的Camera绘制的内容。Solid Color:固定颜色,擦除上一帧的颜色和深度并先用固定颜色渲染在最底层,Depth大的Camera,将会清除Depth小的Camera绘制的内容。De...原创 2019-02-25 12:31:03 · 329 阅读 · 0 评论 -
Unity用户手册-动画系统Animator
动画系统Animator动画类型Legacy 基础的动画Generic 动画,包含动画状态机Humanoid 人形动画,包含动画状态机Update ModeNormal 动画播放将与Update同步更新,动画播放的速度与当前的TimeScale相匹配,如果TimeScale变慢,动画播放速度也会变慢Animate Physics 动画播放将与FixedUpdate...原创 2019-02-25 12:30:11 · 656 阅读 · 0 评论 -
Unity用户手册-Physics物理系统
Physics物理系统碰撞的基本原理场景管理器会把场景划分成很多区域,通常用二叉树,四叉树或八叉树来划分,先划分几个大的区域,然后大的区域内,又分成几个小的区域,小的区域又分成更小的区域。场景中的GameObject会处在特定的区域内,而每个区域存在树的节点中。当需要做碰撞检测时,只需要检测GameObject所在的区域内的碰撞关系。 判断两个GameObject是否碰撞,实质上就是检测...原创 2019-02-25 12:28:46 · 1206 阅读 · 0 评论 -
Unity用户手册-粒子系统
粒子系统属性:Simulation SpaceLocal 发出的粒子的位置相对于当前的Transform是不变的,当前Transform移动到什么位置,粒子也会跟随移动到什么位置World 发出的粒子的位置不跟随当前Transform的位置的移动而移动Scaling ModeHierarchy 当前粒子的Scale会受到父对象的Scale的影响Local 当前粒子...原创 2019-02-25 12:23:11 · 342 阅读 · 0 评论 -
Unity用户手册-Light & Shadow
Light & ShadowRender Mode(顶点光和像素光)分为Auto,Important和Not Important模式。Auto模式:根据Quality Setting和光照强度,选择顶点光计算模式或像素光计算模式。Important模式:光线总是对每像素进行光照计算。(像素光)Not Important模式:光线总是以更快的渲染方式,对...原创 2019-02-25 12:22:21 · 694 阅读 · 0 评论