Unity一些面试题整理

合集下载

游戏公司unity面试题

游戏公司unity面试题

Unity3d 程序员面试题1.什么是渲染管道?渲染管道有哪些步骤?答:渲染管道是指程序为了在显示器上输出图像而经过的一系列必要操作.渲染管道的步骤有:本地空间->世界空间->视图空间->背面剔除->光照计算->相机裁剪->投影计算->视口变换->光栅化2.Unity3d有几种加载Prefab的方式?答: 1.静态引用,建一个public变量,在Inspector里把prefab拉上去,在场景运行时会自动加载,用的时候instantiate2.Resource.Load, 在调用该函数后加载, Load以后instantiate3.AssetBundle.Load 在调用该函数后加载, Load以后instantiate3.什么是协同程序?答:在主线程序运行时同时开启另一段逻辑处理,来协助当前程序的执行.换名话说.开启协程就象开启一个线程.4.你例举几个你用过的Unity3d插件,并说明它们的用途和特点.5.Unity3d中的碰撞器Collision和触发器Trigger的区别?答:碰撞器有碰撞效果, IsTrigger = false 在碰撞发生时会调用OnCollisionEnter,OnCollisionStay,OnCollisionExit函数.触发器没有碰撞效果, IsTrigger = true, 可被触发时会调用OnTriggerEnter,OnTriggerStay,OnTriggerExit函数6.物体发生碰撞的必要条件答:两件物体都必须有碰撞组件(Collider),其中一物体还必须带有Rigidbody刚体组件7.在物体发生碰撞的整个过程中,有几个阶段,不同阶段分别调用哪些函数答:1.OnCollisionEnter2.OnCollisionStay3.OnCollisionExit8.在unity3D中有Update还有FixedUpdate,物理引擎的更新一般放在哪个系统函数里,为什么?答:物理引擎的更新一般放在FixedUpdate里面,和Update不同,FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降.因为FixedUpdate是每固定帧绘制时执行一次,所以更适合做物理控制.9.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?答:移动摄像机的动作应该放在LateUpdate函数中.在每帧执行完毕调用,它是在所有Update结束后才调用,比较适合用于命令脚本的执行.如果不是在所有Update执行完后就移动摄像机可能会出现摄像机移动了,视口里的内容还没有更新的空帧现象.10.场景中有多个相机(Camera)时,怎么来设置多个相机的渲染顺序.答: Depth参数,设为-1会最先被渲染,值越大越后被渲染.11.LOD是什么, 优缺点是什么?答: LOD 是Level Of Detail的缩写,是指的多层次细节技术,是最常用的游戏优化技术.它按照模型的位置和重要程度决定物体渲染的精细层度,从而降低非重要物体的在视口中的面数和细节度,来提高渲染运算的速度.12.写出光照计算中的Diffuse的计算公式?答: diffuse = Kd * colorLight *max(N . L, 0) ; Kd漫反射系数,ColorLight光照的颜色,N物体表面单位法线向量, L由点指向光源的单位向量, 其中N与L为点乘,如果结果小于等于0,则漫反射为013.Vertex Shader是什么?答:顶点着色器14.MipMap是什么,作用?答:MIP map技术与材质帖图技术结合,根据距观看者远近距离的不同,以不同的分辨率将单一的材质帖图以多重图像的形式表现出来并代表平面纹理:尺寸最大的图像放在前面显著的位置,而相对较小的图像则后退到背景区域。

【新提醒】【unity常见面试题】

【新提醒】【unity常见面试题】

【新提醒】【unity常见面试题】本帖最后由小布丁~ 于 2015-6-30 08:24 编辑1. 游戏对象问题:游戏对象消失三种方法的区别?(enabled/Destroy/active)gameObject.renderer.enabled=fasle是控制一个物体是否在屏幕上渲染或显示而物体实际还是存在的只是想当于隐身而物体本身的碰撞体还依然存在的GameObject.Destroy()表示移除物体或物体上的组件代表销毁该物体实际上该物体的内存并没有立即释放而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了一般是在c场景中才真正释放该物体的内存资源(这是我的体会不知道理解错误没)gameObject.active=false是否在场景中停用该物体在你gameObject.active =false中则你在场景中用find找不到该物体如果该物体有子物体你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)副作用:通过GameObject.Find方法查找不到2. 协同程序(Coroutine)协同程序,即在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。

换句话说,开启协同程序就是开启一个线程。

原理:协同程序被开启后作为一个线程在运行,而MonoBehaviour也是一个线程,他们成为互不干扰的模块,除非代码中用调用,他们共同作用于同一个对象,只有当对象不可见才能同时终止这两个线程。

使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序。

使用StopCoroutine(string methodName)来终止一个协同程序,使用StopAllCoroutines()来终止所有可以终止的协同程序,但这两个方法都只能终止该MonoBehaviour中的协同程序。

还有一种方法可以终止协同程序,即将协同程序所在GameObject的Active属性设置为false,当再次设置active为ture 时,协同程序并不会再开启。

Unity面试题(含答案)

Unity面试题(含答案)

Unity面试题(含答案)史上最全的Unity面试题(持续更新总结。

)包含答案的Unity面试题这个是我刚刚整理出的Unity面试题,为了帮助大家面试,同时帮助大家更好地复习Unity知识点,如果大家发现有什么错误,(包括错别字和知识点),或者发现哪里描述的不清晰,请在下面留言,我会重新更新,希望大家共同来帮助开发者一:什么是协同程序?在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。

二:Unity3d中的碰撞器和触发器的区别?碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。

当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。

如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器三:物体发生碰撞的必要条件?两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。

四:请简述ArrayList和List的主要区别?####ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)?装箱拆箱的操作(费时)?List是接口,ArrayList是一个实现了该接口的类,可以被实例化五:如何安全的在不同工程间安全地迁移asset数据?三种方法1.将Assets目录和Library目录一起迁移2.导出包,export Package3.用unity自带的assets Server功能六:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生Awake –>OnEnable->Start,OnEnable在同一周期中可以反复地发生。

Unity面试题(一)

Unity面试题(一)

Unity⾯试题(⼀)第⼀部分1. 请简述值类型与引⽤类型的区别1. 值类型存储在内存栈中,引⽤类型数据存储在内存堆中,⽽内存单元中存放的是堆中存放的地址。

2. 值类型存取快,引⽤类型存取慢。

3. 值类型表⽰实际数据,引⽤类型表⽰指向存储在内存堆中的数据的指针和引⽤。

4. 栈的内存是⾃动释放的,堆内存是 .NET 中会由 GC 来⾃动释放。

5. 值类型继承⾃ System.ValueType, 引⽤类型继承⾃ System.Object 。

2.C# 中所有引⽤类型的基类是什么System.Object3. 请简述 ArrayList 和 List<Int> 的主要区别ArrayList,存在类型不安全问题,和装箱拆箱性能问题;类型不安全:ArrayList会把所有数据当做Object类型来处理,所以允许操作不同类型的数据;所以在运⾏时,可能会报类型不匹配的错误;装箱拆箱:例如需要将int-->object,object-->int;过程消耗性能;List<Int>:List是ArrayList的等效类;因为泛型避免了编译时输⼊不同类型;List将所有内容存储在T类数组中,没有装箱,但是数组是在堆上分配的。

所以避免了类型不安全和装箱拆箱问题;4. 请简述 GC (垃圾回收)产⽣的原因,并描述如何避免?原因:GC 回收堆上的内存避免: 1 )减少 new 产⽣对象的次数2 )使⽤公⽤的对象(静态成员)3 )将 String换为 StringBuilder5. 请描述 Interface 与 abstract类之间的不同⼀个类继承了某个抽象类表⽰它“是什么”,实现了某个接⼝表⽰它“有什么功能”或者“会做什么事”。

⽐如:燕⼦(具体类)是鸟(抽象类),会飞(接⼝)。

C#中不⽀持多继承,即燕⼦只能是鸟,不会是其他东西了;但可以有多个功能,做很多事,⽐如会飞(IFly),会吃(IEat)。

unity面试题目及答案

unity面试题目及答案

unity面试题目及答案一、Introduction (简介)在Unity面试中,通常会涉及到一些常见的技术问题和编程知识点。

下面将列举一些常见的Unity面试题目,并给出相应的答案。

希望能够对您有所帮助。

二、Unity基础知识1. 什么是Unity?Unity是一款跨平台的游戏开发引擎,它提供了丰富的工具和各种功能,方便开发人员创建游戏、模拟器和其他交互式内容。

2. Unity支持哪些平台?Unity支持 iOS、Android、Windows、Mac、Linux等多个平台。

3. 请简述Unity中的场景(Scene)和资源(Asset)的概念及用途。

场景(Scene)是Unity中用于组织和呈现游戏或应用程序的空间。

资源(Asset)则是Unity中用于存储游戏元素(如角色、音频、图片等)的文件。

4. Unity中脚本编程语言是什么?Unity支持多种脚本编程语言,包括C#、JavaScript和Boo。

其中C#是最常用的脚本语言。

5. 在Unity中如何创建一个脚本?在Unity中,可以通过鼠标右键点击Project视图中的文件夹,选择“Create”->“C# Script”,然后命名脚本文件。

6. 请简述Unity中的游戏对象(GameObject)和组件(Component)的关系。

游戏对象(GameObject)是Unity中的基本构建单位,可以用于组织场景中的元素。

而组件(Component)可以附加到游戏对象上,用于控制和定义游戏对象的行为与属性。

7. Unity中常用的内置组件有哪些?Unity中常用的内置组件有Transform(用于控制游戏对象的位置、旋转和缩放)、Renderer(用于渲染游戏对象的图形)、Collider(用于碰撞检测)等。

8. 请简述Unity中的物理引擎。

Unity中的物理引擎可以用于模拟游戏中的物理效果,如重力、碰撞等。

Unity使用了开源的物理引擎库Bullet Physics和NVIDIA PhysX。

Unity3D面试题

Unity3D面试题

Unity3D面试题1.哪种实时光源是Unity中没有的?A:点光源B:方向光C:聚光灯D:日光灯3.以下哪种操作步骤可以在场景中添加“WindZone”?A:Terrain->WindZone5.下列哪一项不属于Camera中的“ClearFlag”?A:Skybo某B:SolidColorC:DepthOnlyD:Background6.以下哪种脚本语言是Unity编辑器所不支持的?A:JavaScriptB:C#C:BooD:Perl7.对于Prefab,以下说法错误的是?A:Prefab资源可以在项目中多次重复使用B:由Prefab实例出的GameObject,其在Hierarchy视图中表现为蓝色C:Prefab上的组件信息一经改变,其实例出的GameObject也会自动改变D:实例出的GameObject上的组件信息一经改变,其对应的Prefab 也会自动改变8.下面哪种做法可以打开Unity的AetStore?A:Window->AetStoreB:Edit->AetStoreC:File->AetStoreD:Aet->AetStore9.在哪个面板中可以修改物体的空间属性,如位置、朝向、大小等?A:ProjectB:InpectorC:HierarchyD:Toolbar10.如何为一个Aet资源设定一个Label,从而能够方便准确的搜索到A:在Project窗口中选中一个Aet,右键->Create->LabelB:在Project窗口中选中一个Aet,右键->AddLabelC:在Project窗口中选中一个Aet,在Inpector窗口中点击添加Label的图标D:在Project窗口中选中一个Aet,在Inpector窗口中点击按钮“AddLabel”1.Mecanim系统中,BodyMak的作用是?A:指定身体的某一部分是否参与骨骼动画B:指定身体的某一部分是否参与物理模拟C:指定身体的某一部分是否可以输出骨骼信息D:指定身体的某一部分是否参与渲染3.下列关于光照贴图,说法错误的是?A:使用光照贴图比使用实时光源渲染要快B:可以降低游戏内存消耗C:可以增加场景真实感D:多个物体可以使用同一张光照贴图4.如何为物体添加光照贴图所使用的UV?A:不用添加,任何时候都会自动生成B:更改物体导入设置,勾选”GenerateLightmapUV”C:更改物体导入设置,勾选“SwapUV”D:更改物体导入设置,在UV选项中选择”UeLightmap”5.在哪个模块下可以修改RenderPath?A:CameraB:LightC:RenderSettingD:ProjectSetting->Quality6.以下哪项技术不是目前Unity所支持的OccluionCulling技术?A:PVSonlyB:PVSanddynamicobjectC:AutomaticPortalGenerationD:DynamicOnly7.关于Vector3的API,以下说法正确的是?A:Vector3.normalize可以获取一个三维向量的法线向量;B:Vector3.magnitude可以获取一个三维向量的长度;C:Vector3.forward与Vector3(0,0,1)是一样的意思;D:Vector3.Dot(向量A,向量B)是用来计算向量A与向量B的叉积8.以下哪个函数在游戏进入新场景后会被马上调用?A:MonoBehaviour.OnSceneWaLoadedB:MonoBehaviour.OnSceneEnterC:MonoBehaviour.OnLevelWaLoadedD:MonoBehaviour.OnLevelEnter9.什么是导航网格(NavMeh)?A:一种用于描述相机轨迹的网格B:一种被优化过的物体网格C:一种用于物理碰撞的网格D:一种用于实现自动寻路的网格10.下列那些选项不是网格层属性的固有选项A:DefaultB:WalkableC:NotWalkableD:Jump。

Unity游戏程序员面试题及解答

Unity游戏程序员面试题及解答

Unity游戏程序员⾯试题及解答典型的⼀些如⼿写排序算法、⼀些基本数学问题,在此就不列举了。

以下整理出⼀些代表性的、有参考价值的题,真实⾯试题,附有本⼈的解答,欢迎讨论。

题1.指出下列哪些属于值类型?int System.Object string UnityEngine.MonoBehaviour UnityEngine.Object struct enum Vector3说明:System.Object是所有类型的基类,其本⾝是引⽤类型。

题2.获取、增加、删除组建的命令分别是什么?获取: GetComponent() 增加: AddComponent() 删除: RemoveComponent()题3.简述你使⽤过哪些第三⽅插件?Skyshop做IBL和PBR,Shatter Toolkit做模型物理破碎,Final IK插件做反向运动学计算。

说明:IBL是基于图像的渲染,PBR是基于物理的渲染。

题4.简述⼀下对象池原理。

什么情况下使⽤?对象池可以将对象存储在⼀块预先划出的内存区域中,当需要时可以取出使⽤,⽽不需要每次都要实例化新的对象。

⼀般在需要循环获取⼀个对象但是不关⼼对象的创造时机时的情况下可以使⽤。

说明:对象池在很多语⾔中都有实现。

所以回答不必拘泥于某种具体的语⾔,说出它的思想即可。

题5.使⽤mipmap有什么好处和坏处?什么情况下使⽤?答:使⽤mipmap可以降低现存带宽占⽤,提升渲染性能,还能减少远处因为分辨率较⼤的纹理因过分缩⼩⽽产⽣的失真。

坏处是会使内存占⽤变⼤,某些情况下会导致远处贴图模糊。

说明:mipmap是⼀种纹理技术,在三维世界中,显⽰⼀张图的⼤⼩与摄象机的位置有关,近的地⽅,图⽚实际象素就⼤⼀些,远的地⽅图⽚实际象素就会⼩⼀些,就要进⾏⼀些压缩,例如⼀张64*64的图,在近处,显⽰出来可能是50*50,在远处可能显⽰出来是20*20.如果只限于简单的去除某些像素,将会使缩⼩后的图⽚损失很多细节,图⽚变得很粗糙,因此,图形学有很多复杂的⽅法来处理缩⼩图⽚的问题,使得缩⼩后的图⽚依然清晰.Mipmap纹理技术是⽬前解决纹理分辨率与视点距离关系的最有效途径,它会先将图⽚压缩成很多逐渐缩⼩的图⽚,例如⼀张64*64的图⽚,会产⽣64*64,32*32,16*16,8*8,4*4,2*2,1*1的7张图⽚,当屏幕上需要绘制像素点为20*20 时,程序只是利⽤ 32*32 和 16*16 这两张图⽚来计算出即将显⽰为 20*20 ⼤⼩的⼀个图⽚,这⽐单独利⽤ 32*32 的那张原始⽚计算出来的图⽚效果要好得多,速度也更快.当然你不需要回答这些原理,简单描述⼀下即可。

unity3d 面试试题

unity3d 面试试题

unity3d 面试题1. 在场景中放置多个Camera并同时处于活动状态时会发生什么.2. 请简述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它.3. 如何销毁一个UnityEngine.Object及其子类.4. 请简述为什么Unity3D中会发生在组件上出现数据丢失的情况(missing).4. 请简述Unity3D下如何安全的在不同工程间迁移asset数据,请举出三种方法.qq群(68994667)的各种吐槽程序@成都: 09:39:021.多个camera与depth有关,2,prefab预定制,我的理解就是,它已经是对象了(包含了各种脚本,模型,资源关系的集合),但是如果你在场景中不引用它,它是不会占用内存的,因此在移动设备上不能直接引用(也就是不能直接托在给脚本的),可以采用resouces.load,传路径的方式。

3、难倒不能直接用destroy,可能另有玄机4、其实就是关系丢失了(Library目录),基本上就是没有在unity里改名啊,改变位置就会出这个问题,5、方法1,可以把assets目录和Library目录一起迁移,方法二,导出包,方法三,用unity带的assets server功能程序@成都: 09:39:12可能理解有错程序@kt: 09:39:47北京程序@笑靥: 09:42:23Program_cyh: 09:46:094.应该是引用的对象发生了改变程序@Frank: 10:26:214. 请简述Unity3D下如何安全的在不同工程间迁移asset数据,请举出三种方法. 个人认为只有一种方法,就是先导出unitypackage格式,再导入另外一个项目程序@Frank: 10:27:303. 如何销毁一个UnityEngine.Object及其子类.直接Destroy,不管是对象还是组件程序@Frank: 10:27:57请简述Prefab的作用就是模板程序@野猪: 10:28:21程序@Frank: 10:29:22请简述为什么Unity3D中会发生在组件上出现数据丢失的情况(missing).通常都是因为项目的相关文件被外部修改或删除成都程序@chwu: 10:33:10@程序@Frank 回答的靠谱程序@野猪: 10:33:21程序@kt: 10:35:33rendertexture 在destroy前,有没有必要调用release呢?程序@Frank: 10:38:38没有release程序@Frank: 10:38:54release 在DirectX里见过程序@小董: 10:40:07大侠何在!~程序@小董: 10:40:29脚本控制---创建一个prefab 如何实现!程序@小董: 10:40:50并且制定目录和命名策划@多乐士: 10:46:35UnityEditor.PrefabUtility.CreateEmptyPrefab。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

60、关于光照贴图
A:使用光照贴图比使用实时光源渲染要快B:可以降低游戏内存消耗C、多个物体可以使用同一张光照贴图
61、关于Vector3的API,以下说法正确的是?
Vector3.forward与Vector3(0,0,1)是一样的意思;
62、以下哪个函数在游戏进入新场景后会被马上调用?
MonoBehaviour.OnLevelWasLoaded
63、什么是导航网格(NavMesh)?
一种用于实现自动寻路的网格
64、什么是局部坐标,什么是世界坐标?
世界坐标是不会变的,一直以世界坐标轴的XYZ为标准。

局部坐标其实就是自身的坐标,会随着物体的旋转而变化的。

65、itween插件的作用是什么,itween【狗刨学习网】作用于世界坐标还是局部坐标,请列举出3个其常用方法?
iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出。

让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等“
方法:a、MoveTo 物体移动;b、ColorTo:随着时间改变对象的颜色组;c、LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置
66、请简述NGUI中Panel和Anchor的作用?
Anchor包含UIAnchor脚本。

UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸Panel对象有UIPanel脚【狗刨学习网】本,UIPanel是一个容器,它将包含所有UI 小部件,并负责将所包含的部件组合优化,以减少绘制命令的调用。

68、ToLayer()这个方法有什么作用?
LayerMask的使用是按位操作的,ToLayer("Players") 返回该Layer的编号。

69、请描述MeshRender中material和shader的区别?
Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。

绘图单元可以依据这个输出来将图像绘制到屏幕上。

输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)
Shader大体上可以分为两类:表面着色器(Surface Shader)、片段着色器(Fragment Shader)
70、什么是矢量图
矢量图:计算机中显示的图形一般可以分为两大类——矢量图和位图。

矢量
图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边
形、圆和弧线等等,它们都是通过数学公式计算获得的。

例如一幅花的矢量
图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决
定花显示出的颜色。

由于矢量图形可通过公式计算获得,所以矢量图形文件
体积一般较小。

矢量图形最大的优点是无论放大、缩小或旋转等不会失真;
最大的缺点是难以表现色彩层次丰富的逼真图像效果。

资源来自于狗刨学习网。

相关文档
最新文档