当前位置: 首页 > news >正文

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

相关文章:

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

Unity面试笔记:Unity常见关键词概念 Invoke 延迟函数 和 Coroutine协程 和 Thread线程帧缓冲区(Frame buffer)颜色缓冲区(Color buffer)深度缓冲区(Depth buffer)模板缓冲区(Stencil…...

gRPC vs HTTP

性能 gRPC 消息使用 Protobuf(一种高效的二进制消息格式)进行序列化。 Protobuf 在服务器和客户端上可以非常快速地序列化。 Protobuf 序列化产生的有效负载较小,这在移动应用等带宽有限的方案中很重要。 gRPC 专为 HTTP/2(HTTP…...

vue 导出el-table表格数据

1.先安装 file-saver 、xlsx 组件 npm install file-saver -Snpm intsall xlsx -S 2.html 代码 <el-table :data"elTable" ref"" id"table-content"><el-table-column label"其他" align"center"></el-…...

【问题记录】AttributeError: module ‘numpy‘ has no attribute ‘bool‘

服务器上运行代码报错&#xff1a; /opt/conda/envs/clrnet/lib/python3.8/site-packages/imgaug-0.4.0-py3.8.egg/imgaug/augmenters/meta.py:3368: FutureWarning: In the future np.bool will be defined as the corresponding NumPy scalar. augmenter_active np.zeros((n…...

WordPress企业模板

首页大图wordpress外贸企业模板 橙色的wordpress企业模板 演示 https://www.zhanyes.com/waimao/6250.html...

Intel Quartus II IP之DP1.4 工程的创建与使用

前述&#xff1a; Win10电脑安装了Quartus 21.4&#xff0c;这可以满足绝大多数工程&#xff0c;特别是对于简单调用fifo/ram等的工程&#xff0c;但是想要学习Quartus的HDMI/DP等高速接口类IP&#xff0c;首先需要创建HDMI/DP IP的设计demo工程&#xff0c;此时还需要安装Ecl…...

k8s集群环境搭建以及插件安装

前置条件 终端工具MobaXterm很好用。 1、虚拟机三台&#xff08;ip按自己的网络环境相应配置&#xff09;(master/node) 节点ipk8s-master192.168.200.150k8s-node1192.168.200.151k8s-node2192.168.200.152 2、关闭防火墙(master/node) systemctl stop firewalld systemc…...

面试的那些事儿

先从面试来说 假如你是网申&#xff0c;你的简历必然会经过HR的筛选&#xff0c;一张简历HR可能也就花费10秒钟看一下&#xff0c;然后HR 就会决定你这一关是Fail还是Pass。 假如你是内推&#xff0c;如果你的简历没有什么优势的话&#xff0c;就算是内推你的人再用心&#x…...

ffmpeg音视频解码

ffmpeg音视频解码 一.编译ffmpeg1.安装vmware虚拟机2.vmware虚拟机安装linux操作系统3.安装ftp和fshell软件4.在Ubuntu&#xff08;Linux&#xff09;中编译Android平台的FFmpeg&#xff08; arm和x86 &#xff09;5.解压FFmpeg6.Android编译脚本&#xff08;1&#xff09;修改…...

uniapp uni.chooseLocation调用走失败那里,错误码:112

问题&#xff1a;我配置了百度上所有能配置的&#xff0c;一直调用不成功&#xff0c;如下图配置的 1:第一个 配置 代码&#xff1a; "permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}…...

第一次开发基于SpringBoot的Java应用

第一次开发基于SpringBoot的Java应用 一、 方式1&#xff1a;IDEA创建New Project Spring Boot官方文档的Getting Started1、IDEA创建New Project2、Spring Boot官方文档的Getting Started2.1 Creating the POM &#xff08;实际是&#xff0c;更新pom.xml&#xff09;2.2 Add…...

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测 目录 回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测预测效果基本描述程序设计参考资料 预测效果 基本描…...

数据结构--排序

参考【算法】排序算法之希尔排序 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/122632213 1. 排序的定义 2. 插入排序 2.1 直接插入排序 在插入第i&#xff08;i>1)个记录时&#xff0c;前面的i-1个记录已经排好序 void insertSort(int r[],int n) {for(int i2;i<…...

Androidmanifest文件加固和对抗

前言 恶意软件为了不让我们很容易反编译一个apk&#xff0c;会对androidmanifest文件进行魔改加固&#xff0c;本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件&#xff0c;我们学完之后可以动手实践。 1、Androidmanife…...

openssl3.2 - 官方demo学习 - cms - cms_denc.c

文章目录 openssl3.2 - 官方demo学习 - cms - cms_denc.c概述笔记END openssl3.2 - 官方demo学习 - cms - cms_denc.c 概述 将CMS数据结构写入PEM文件, 并将分离后的加密数据单独写到数据文件. 笔记 /*! \file cms_denc.c * \note openssl3.2 - 官方demo学习 - cms - cms_d…...

【Linux 命令】tree 对目录进行树形展示

目录 1、tree 命令功能展示 2、tree 命令安装 3、tree 命令语法及其参数功能 4、终止 tree 展开树命令 1、tree 命令功能展示 在 Linux 中&#xff0c;我们使用 ll 命令对目录的展示并不太方便我们查看&#xff0c;不太清晰明了&#xff0c;所以我们可以使用 tree 命令以…...

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…...

使用xbindkeys设置鼠标侧键

1.安装如下包 sudo apt install xbindkeys xautomation 2.生成配置文件 xbindkeys --defaults > $HOME/.xbindkeysrc 3.确定侧键键号 在终端执行下面的代码&#xff1a; xev | grep button 此时会出现如下窗口&#xff0c;将鼠标指针移动到这个窗口上&#xff1a; 单…...

跨站点请求伪造攻击 - Cross Site Request Forgery (CSRF)

什么是CSRF 最好理解CSRF攻击的方式是看一个具体的例子。 假设你的银行网站提供一个表单,允许当前登录用户将钱转账到另一个银行账户。例如,转账表单可能如下所示: <form method="post"action="/transfer"> <...

PLAN B KRYPTO ASSETS GMBH CO. KG 普兰资产管理公司

引领加密技术不断演进 PLAN B KRYPTO ASSETS普兰资产管理以其独创的「Trident Strategy三叉戟模型」技术为基础&#xff0c;持续推动加密技术的发展&#xff0c;打造 Schutz&#xff08;舒茨盾&#xff09; AI 金融隐私匿名公链。致力于提供高效的技术服务&#xff0c;基于机构…...

Java面向对象实战:从0到1手写奇偶判断工具类[特殊字符]新手保姆级教程

&#x1f338;你好呀&#xff01;我是断弦承露&#x1f31f;感谢陪伴&#xff5e; 小白博主在线求友&#x1f33f; 跟着小白学/Java/软件设计/鸿蒙开发/芯片开发&#x1f4d6;专栏汇总&#xff1a;《软件设计师》专栏 | 《Java》专栏 | 《 RISC-V 处理器实战》专栏 | 《Flutter…...

别再死记硬背公式了!Cesium中Entity姿态(HPR)的获取与设置,一个例子讲透

Cesium中Entity姿态控制的本质&#xff1a;从HPR到四元数的思维跃迁 当你第一次在Cesium中加载一个3D模型&#xff0c;却发现它头朝下或者背对镜头时&#xff0c;那种挫败感我深有体会。传统教程往往直接扔给你一堆转换公式&#xff0c;却很少解释为什么需要这些看似复杂的数学…...

深入解析Golang中的占位符:%w、%v、%s的应用与最佳实践

1. Golang占位符基础入门 刚开始接触Golang时&#xff0c;fmt包里的那些百分号开头的占位符确实让我有点懵。记得第一次看到%s、%v、%w这些符号时&#xff0c;我还以为是什么特殊运算符。后来在实际项目中用多了才发现&#xff0c;这些看似简单的占位符&#xff0c;其实是Gola…...

云容笔谈开源镜像优势:免编译、免依赖、BF16原生支持,开箱即生成

云容笔谈开源镜像优势&#xff1a;免编译、免依赖、BF16原生支持&#xff0c;开箱即生成 最近在尝试各种AI图像生成工具时&#xff0c;我发现了一个很有意思的现象&#xff1a;很多工具要么安装配置复杂&#xff0c;要么生成效果不尽如人意&#xff0c;特别是想要生成具有东方…...

Qwen3.5-4B-Claude-Opus部署教程:模型路径软链失效时的容错加载机制

Qwen3.5-4B-Claude-Opus部署教程&#xff1a;模型路径软链失效时的容错加载机制 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该版本以GG…...

计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 SpringBoot 安卓智能医疗预约挂号平台 JavaAndroid 医患预约诊疗管理系统

计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 53m069&#xff0c;末尾的数字和英文也要加上 &#xff08;配套有源码 程序 mysql 数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联 xi 可分享随着信息技术的飞速发展和医疗需求的…...

STM32CubeMX+Keil MDK联合开发:手把手教你配置蓝桥杯G431工程模板

STM32CubeMXKeil MDK联合开发&#xff1a;手把手教你配置蓝桥杯G431工程模板 对于参加蓝桥杯嵌入式赛道的选手来说&#xff0c;掌握STM32G431RBT6开发板的快速工程搭建是必备技能。本文将带你从零开始&#xff0c;通过STM32CubeMX和Keil MDK的协同工作&#xff0c;完成一个标准…...

水下机器人导航的‘感官进化’:从纯视觉VIO到声光惯压融合的SVIn2系统拆解

水下机器人导航的‘感官进化’&#xff1a;从纯视觉VIO到声光惯压融合的SVIn2系统拆解 当一台水下机器人潜入浑浊的湖泊执行管道巡检任务时&#xff0c;它的视觉传感器突然失效——悬浮颗粒使画面变成乳白色噪点&#xff0c;而水流扰动让惯性测量单元(IMU)数据充满噪声。这正是…...

告别格式转换烦恼!Marker让文档转换效率提升5倍

告别格式转换烦恼&#xff01;Marker让文档转换效率提升5倍 【免费下载链接】marker 一个高效、准确的工具&#xff0c;能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式&#xff0c;支持多语言和复杂布局处理&#xff0c;可选集成 LLM 提升精度&#xff0c;适用于学术…...

农业气象监测系统—实时感知・远程管控・智能预警

在农业现代化向纵深推进的当下&#xff0c;气象数据已成为农业生产的 “核心指挥棒”。烟台中盾信息科技有限公司&#xff08;下称 “烟台中盾科技”&#xff09;紧扣农业农村发展需求&#xff0c;以物联网、大数据技术为基石&#xff0c;打造农业气象监测系统&#xff0c;构建…...