Unity面试笔记:Unity常见关键词概念

Unity面试笔记:Unity常见关键词概念

    • Invoke 延迟函数 和 Coroutine协程 和 Thread线程
    • 帧缓冲区(Frame buffer)
    • 颜色缓冲区(Color buffer)
    • 深度缓冲区(Depth buffer)
    • 模板缓冲区(Stencil buffer)
    • Image和RawImage,
    • Texture和Sprite有什么区别
    • alpha blend工作原理
    • LOD 多层次细节处理技术
    • Text 和 TMPText的区别 优缺点
    • MeshRender中material和shader的区别?
    • MeshRender中material和 sharedmaterial的区别?
    • MeshRenderer 和 SkinnedMeshRenderer 和 Renderer
    • MipMap
    • 什么是LightMap?
    • shader 分类
    • 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)/255

LOD 多层次细节处理技术

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属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何从命令行运行testng.xml?

目录 创建一个新的java项目并从命令行运行testng.xml 使用命令行运行XML文件 从命令行运行现有maven项目的XML文件 在这篇文章中,我们将使用命令行运行testng.xml。有多种场景需要使用命令行工具运行testng.xml。也许您已经创建了一个maven项目,现在想…

运筹说 第97期|非线性规划-一维搜索

第二节 一维搜索 通过上期学习,大家已经了解了非线性规划的基本内容,那么如何求解一个非线性规划问题呢?本期小编就带大家来学习用于求解单变量无约束极值问题的方法——一维搜索,该方法也是后面求解更复杂问题的基础。 一、引入…

FinalShell连接虚拟机2024/1/16

目录 1.右键虚拟机桌面空白处,选择打开终端,在终端中输入ifconfig命令,查看Linux系统的IP地址:复制。 2.打开FinalShell,点击(1)号文件夹打开连接管理器,点击(2)号选择…

Angular系列教程之zone.js和NgZone

文章目录 什么是zone.jsZone的工作原理Zone的常见用途NgZone:Angular中的zone.js使用NgZone使用NgZone执行代码使用NgZone外部检测 结论 什么是zone.js 在Angular中,zone.js是一个非常重要的库,它为我们提供了一种跟踪和管理异步操作的机制。…

vue中引入sass、scss

常规步骤 1. 创建项目 使用vue cli 脚手架工具创建项目 vue create xxxx2. 创建全局样式文件 全局样式变量 路径:/assets/styles/variables.scss //flex 布局变量 $--flex-direction: ("row", "column"); $--flex-position: ("start"…

排序嘉年华———归并排序

文章目录 一.归并是什么?题目一:合并有序数组题目二:合并有序链表 二.归并排序1.递归式归并2.非递归式的归并排序 一.归并是什么? 相信朋友们应该做过一类题,合并两个有序数组,在链表里也有合并两个单链表…

liunx安装redis

安装redis 1.向Xftp7上传Redis压缩包 进行解压:tar -zxvf redis-6.0.8.tar.gz 解压后预编译: cd redis-6.0.8 make 创建文件: mkdir -p /opt/redis 安装到指定目录: make install PREFIX/opt/redis 进入安装文件 bin 目录:cd /opt/redis/bin ./redis-se…

Angular系列教程之依赖注入详解

文章目录 引言依赖注入基础依赖注入的基本概念依赖注入的原理 依赖注入实践依赖注入注意事项 引言 Angular作为一款流行的前端框架,提供了许多优秀的功能和特性,其中之一就是依赖注入(Dependency Injection)。依赖注入是一种设计…

IP定位技术在网络安全行业的探索

随着互联网的普及和深入生活,网络安全问题日益受到人们的关注。作为网络安全领域的重要技术,IP定位技术正逐渐成为行业研究的热点。本文将深入探讨IP定位技术在网络安全行业的应用和探索。 一、IP定位技术的概述 IP定位技术是通过IP地址来确定设备地理位…

Github 2FA验证的解决方法

当前使用GitHub需要启用 2FA 验证,也就是除了账号密码外还有一个实时码,需要额外输入这个正确的实时码才能开启 2FA 验证和后续登陆。 浏览器插件 这是目前我在使用的方法。在浏览器中添加一个叫做Authenticator的插件,传送地址:…

单表查询 -- MySQL(3)

目录 题目: 创建表: 问题(17个): 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工…

5 个被低估的开源项目

文章目录 1.集算器 -数据处理2. Firecamp - 邮递员替代方案3.Keploy——后端 测试4. Hanko - 密钥验证5. Zrok - Ngrok 类固醇 长话短说 本文列出了五个不太受欢迎的优秀项目,您应该尝试一下。🔥 这些工具旨在改进数据处理、API 开发、后端测试、身份验…

GO——gin中间件和路由

中间件 参考:https://learnku.com/articles/66234 结构 中间件是函数中间件函数被放在调用链上调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考:go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:506 通过path找到…

互联网程序员面试方向有哪些

互联网程序员面试的题目和面试方向非常广泛,主要围绕以下几个主题: 基础知识:包括数据结构、算法、面向对象编程、设计模式、网络协议等。例如,如何实现单例模式,二叉树有哪些遍历方式等。编程语言:如Java…

MacOS系统 安装ZooKeeper 和常见问题解决

安装ZooKeeper 和 常见问题 一、安装和启动二、常见问题和解决2.1 配置文件在哪?2.2 安装路径在哪?2.3 如果不想后台运行zookeeper,用完就关,省资源,可以的!2.4 启动时,报错2.4 启动/停止使用 z…

MySQL基础笔记(6)函数

函数:是指一段可以直接被另一段程序调用的程序或者代码~(MySQL内置) 一.字符串函数 trim不能去除中间的空格~ select concat(jsl,1325): 执行如上的代码,返回字符串"jsl1325"。 select lower(JSL); 执行如上的代码&…

【转】git如何使用.gitignore文件设置忽略文件规则

git如何使用.gitignore文件设置忽略文件规则 目录 一.前言 二.讨论一下.gitignore文件规则 三.具体.gitignore文件写法示例 四.讨论一下.gitignore文件规则的生效优先级 五.其他 一.前言 我们使用git进行版本控制的过程中,会希望一些文件不要进行提交,那…

转盘寿司(100%用例)C卷 (JavaPythonC++Node.jsC语言)

寿司店周年庆,正在举办优惠活动回馈新老客户。 寿司转盘上总共有n盘寿司,prices[i]是第i盘寿司的价格,如果客户选择了第i盘寿司,寿司店免费赠送客户距离,第i盘寿司最近的下一盘寿司i,前提是prices[j]< prices[i],如果没有满足条件的j,则不赠送寿司。 每个价格的寿司都…

【严重】GitLab 以其他用户身份执行 Slack 命令

漏洞描述 GitLab 是由GitLab公司开发的、基于Git的集成软件开发平台。使用 Slack 命令在 Slack 聊天环境中运行常见的 GitLab 操作。 GitLab 受影响版本中&#xff0c;由于配置Slack/Mattermost 集成时&#xff0c;未正确验证用户身份信息&#xff0c;导致攻击者可以使用其他…

深度学习基础知识整理

自动编码器 Auto-encoders是一种人工神经网络&#xff0c;用于学习未标记数据的有效编码。它由两个部分组成&#xff1a;编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式&#xff0c;而解码器则将该表示形式转换回原始数据。这种方法可以用于降维&#xff0c;去噪…