要学做网站,网站建设的含义,win7局域网网站开发,开发微网站和小程序Unity面试笔记#xff1a;Unity常见关键词概念 Invoke 延迟函数 和 Coroutine协程 和 Thread线程帧缓冲区#xff08;Frame buffer#xff09;颜色缓冲区#xff08;Color buffer#xff09;深度缓冲区#xff08;Depth buffer#xff09;模板缓冲区#xff08;Stencil… Unity面试笔记Unity常见关键词概念 Invoke 延迟函数 和 Coroutine协程 和 Thread线程帧缓冲区Frame buffer颜色缓冲区Color buffer深度缓冲区Depth buffer模板缓冲区Stencil bufferImage和RawImageTexture和Sprite有什么区别alpha blend工作原理LOD 多层次细节处理技术Text 和 TMPText的区别 优缺点MeshRender中material和shader的区别MeshRender中material和 sharedmaterial的区别?MeshRenderer 和 SkinnedMeshRenderer 和 RendererMipMap什么是LightMapshader 分类Vertex Shader是什么怎么计算image.alphaHitTestMinimumThreshold Invoke 延迟函数 和 Coroutine协程 和 Thread线程
Invoke延迟函数通过方法名延迟调用对应函数
注意当此脚本或者当前脚本所在的游戏物体失活延迟函数依然会执行
但是当前脚本或者游戏物体被销毁延迟函数就不会执行协程不同于多线程它不是一个线程依附于Unity主线程Unity中的协程由协程函数和协程调度器两部分构成。
协程函数使用的是C#的迭代器, 协程调度器则利用了MonoBehaviour中的生命周期函数来实现。
协程函数实现了分步, 协程调度器实现了分时.
注因为协程分时分步执行的特性当多个协程的耗时操作挤在同一时间执行也会造成卡顿。
应用场景1.www加载网络数据2.异步加载资源场景
挂载此脚本的组件和物体销毁协程将不会执行
物体失活协程不执行组件失活协程执行。协程和线程区别
新开一个线程是独立的一个管道和主线程并行执行新开一个协程是在原线程之上开启进行逻辑分时分步执行
新开的线程无法访问Unity对象无法使用unity中的api
新开的线程记得关闭 要不然会一直运行。
同一时间只能执行某个协程同一时间可以同时执行多个线程帧缓冲区Frame buffer
帧缓冲区也被叫做显存它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。
帧缓冲可能是GPU专属内存也可能是GPU和CPU共享内存看硬件。颜色缓冲区Color buffer
用于绘图的缓冲区它包含了颜色索引或者RGBA颜色数据深度缓冲区Depth buffer
与帧缓冲区对应存储每个像素的深度值通过深度缓冲区,我们可以进行深度测试。
当启动深度测试时片段像素深度值和深度缓冲区深度值进行比较从而确定像素的遮挡关系
保证渲染正确决定片段哪些像素点数据可以替换到颜色缓冲区中。模板缓冲区Stencil buffer
与颜色缓冲区和深度缓冲区类似模板缓冲区可以为屏幕上的每个像素点保存一个无符号整数值。
这个值的具体意义视程序的具体应用而定。
在渲染的过程中可以用这个值与一个预先设定的参考值相比较根据比较的结果来决定是否更新相应的像素点的颜色值。
这个比较的过程被称为模板测试。模板测试发生在透明度测试alpha test之后深度测试depth test之前。
如果模板测试通过则相应的像素点更新否则不更新。模板缓冲区 用于规范颜色缓冲区 的运作范围Image和RawImage
Imgae比RawImage更消耗性能
Image只能使用Sprite属性的图片但是RawImage什么样的都可以使用
Image适合放一些有操作的图片裁剪平铺旋转什么的针对Image Type属性
RawImage就放单独展示的图片就可以性能会比Image好很多Texture和Sprite有什么区别
Sprite作为UI精灵使用Texture作用模型贴图使用。alpha blend工作原理
Alpha Blend 实现透明效果不过只能针对某块区域进行alpha操作透明度可设。
Color 原颜色*alpha/255目标色*255-alpha/255LOD 多层次细节处理技术
LOD多层次细节是最常用的游戏优化技术。
它按照模型的位置和重要程度决定物体渲染的资源分配降低非重要物体的面数和细节度从而获得高效率的渲染运算。
缺点增加了内存Text 和 TMPText的区别 优缺点
Text是像素渲染放大之后就会模糊使用Text父物体的放大缩小会影响子物体Text的清晰度
TMPText不会它是网格渲染TMPText会把字体生成一个类似于贴图的东西然后读取贴图的坐标来获取对应的文字
更换文字的消耗会比Text大。
TMPText更适用于不会变动的文字特别是在量大的情况下性能比Text高一些需要经常变动的问题用Text好点
TMPText在字体库很大的情况下查找更换会比较慢。MeshRender中material和shader的区别
MeshRender是模型渲染的组件有此组件物体才能显示出来
Material是材质球实际就是shader的实例并进行赋值贴图、纹理、颜色等。
Shader是着色器实际上是一段程序还可以用来实现一些仅靠贴图不容易实现的效果如玻璃。
Shader大致分为
1.表面着色器
2.顶点和片元着色器
3.固定功能着色器MeshRender中material和 sharedmaterial的区别?
修改sharedMaterial将改变所有物体使用这个材质 的外观并且也改变储存在工程里的材质设置。
不推荐修改由sharedMaterial返回的材质。如果你 想修改渲染器的材质使用material替代。当使用Renderer.material的时候每次调用都会生成一个新的material到内存中去.
这在销毁物体的时候需要我们手动去销毁该material否则会一直存在内存中。
也可以在场景替换的时候使用Resources.UnloadUnusedAssets去统一释放内存。当使用Renderer.sharedMaterial的时候并不会生成新的material而是直接在原material上修改
并且修改后的设置就会被保存到项目工程中。一般不推荐使用这个去修改.MeshRenderer 和 SkinnedMeshRenderer 和 Renderer
MeshRenderer 和 SkinnedMeshRenderer 都继承自Renderer类两个类都和网格有关。
MeshRenderer 一般引用于没有动画的模型身上比如建筑石头树木等。
SkinnedMeshRenderer 一般应用于具有蒙皮动画、表情动画的应用场景中。MipMap
MipMap为了加快渲染速度和减少图像锯齿贴图被处理成由一系列被预先计算和优化过的图片组成的文件。
优点优化显存带宽用来减少渲染。因为可以根据距离摄像机远近选择适合的贴图来渲染。所以UI不适用MipMap。
缺点运行时占用更多内存且增加包的容量。什么是LightMap
Unity的Lightmap是一种用于预计算光照信息的技术可以提高场景的渲染效率和真实感。使用Lightmap可以实现以下效果
1.实时光照的替代实时光照计算通常比较昂贵尤其是在复杂的场景中。
通过预计算光照信息并将其存储在Lightmap中可以避免在运行时进行实时光照计算从而提高渲染性能。
2.高质量的间接光照Lightmap可以捕捉到场景中物体之间的间接光照信息包括反射和遮挡。
这可以增加场景的真实感并在计算上比实时计算的间接光照更高效。
3.静态物体的持久光照效果对于静态不变的物体例如墙壁、地面等
其光照信息可以在编辑器中进行烘焙并在运行时保持不变。
这意味着即使在场景中移动相机或物体它们的光照效果也会保持一致。使用Unity的Lightmap需要以下步骤
1.设置光照在Unity编辑器中可以选择合适的光照设置包括光源类型、光源参数、间接光照参数等。
2.烘焙Lightmap在编辑器中可以选择进行Lightmap烘焙操作。
这将会将光照信息计算并存储在场景中的物体的纹理中。
3.应用Lightmap在运行时Unity会自动将Lightmap应用于相应的物体。
可以通过设置物体的渲染器组件来控制Lightmap的使用方式。注意的是Lightmap适用于静态不变的物体例如墙壁、地面等。
对于动态或可移动的物体可以使用实时光照计算技术如实时阴影、实时全局光照等。
使用Lightmap可以提高场景的视觉效果和性能并在静态物体上获得高质量的光照效果。
它在许多类型的游戏和应用程序中广泛应用包括建筑可视化、虚拟现实、游戏开发等。shader 分类
表面着色器的抽象层次比较高
它可以轻松地以简洁方式实现复杂着色表面着色器可同时在前向渲染及延迟渲染模式下正常工作。顶点片段着色器可以非常灵活地实现需要的效果但是需要编写更多的代码并且很难与Unity的渲染管线完美集成。固定功能管线着色器可以作为前两种着色器的备用选择
当硬件无法运行哪些酷炫的Shader的时候还可以通过固定功能管线着色器来绘制出一些基本的内容Vertex Shader是什么怎么计算
Vertex Shader 中文意思就是顶点着色器是一段执行在GPU上的程序
用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。image.alphaHitTestMinimumThreshold
UGUI实现不规则图片点击像素点击的简单方法
1.开启图片的Read/Write Enabled
2.设置 image.alphaHitTestMinimumThreshold属性