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常见面试题2

21.为什么dynamic font在unicode环境下优于static fontUnicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。
使用动态字体时,Unity将不会预先【狗刨学习网】生成一个与所有字体的字符纹理。
当需要支持亚洲语言或者较大的字体的时候,若使用正常纹理,则字体的纹理将非常大。
22.Render的作用?描述MeshRender和SkinnedMeshRender的关系与不同A renderer is what makes an object appear on the screen。
23.简述SkinnedMesh的实现原理/n5/article/details/310587224.在场景中放置多个Camera并同时处于活动状态会发生什么?答:游戏界面可以看到很多摄像机的混合25.Prefab的作用?如何在移动环境的设备下恰当地使用它?答:Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改/88999660/archive/2013/03/15/2961663.html26.如何销毁一个UnityEngine.Object及其子类答:Destory27.为什么Unity3D中会发生在组件上出现数据丢失的情况?答:组件上绑定的对象被删除了28.如何安全的在不同工程间安全地迁移asset数据?三种方法答:·将Assets目录和Library目录一起迁移·导出包·用unity自带的assets Server功能29.MeshCollider和其他Collider的一个主要不同点?答:Convex?30.当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?穿透(碰撞检测失败)/threads/3353-collision-detection-at-high-speed该文章出自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的协程实在每帧结束之后去检测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⾯试题(⼀)第⼀部分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面试题目及答案一、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。
unity常见面试题

21.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况一般是组件上绑定的物体对象被删除了22.alpha blend工作原理Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
23.写出光照计算中的diffuse的计算公式diffuse = Kd x colorLi【狗刨学习网】ght x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。
24.Lod是什么,优缺点是什么?LOD(Level of detail)多层次细节,是最常用的游戏优化技术。
它按照模型的位置和重要程度决定物体渲染的资非重要物体的面数和细节度,从而获得高效率的渲染运算。
25.两种阴影判断的方法、工作原理。
26.Vertex Shader是什么,怎么计算?顶点着色器27.MipMap是什么,作用?MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成预先计算和优化过的图片组成的文件,这样的贴图被称为Mip【狗刨学习网】Map。
28.机试:二选一1.用代码实现第三角色控制器2.实现吊机吊物体的功能29.反向旋转动画的方法是什么?30.碰撞检测需要物体具备什么属性?31.获取、增加、删除组件的命令分别是什么?获取:GetComponent增加:AddComponent删除:Destroy32.Animation.CrossFade命令作用是:(C)A.动画放大B.动画转换C.动画的淡入为其他动画33.Application.loadLevel命令为:(A)A.加载关卡B.异步加载关卡C.加载动作34.调试记录到控制台的命令是什么?Debug.Log();35.编辑器类存放路径是什么?工程目录下的Assets/Editor文件夹下。
Unity面试题

面试一1.Unity中碰撞器(Collider)和触发器(Trigger)的区别?碰撞器(Collider)有碰撞效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数触发器(Trigger)没有碰撞效果,isTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数2.物体发生碰撞的必要条件?必须带有collider碰撞器和rigibody刚体属性或者人物控制器,其实人物控制器就包含了前两者,另外一个物体也要必须带有Collider,Collider分类:网格碰撞器,盒子碰撞器,胶囊碰撞器,球型碰撞器,地形碰撞器!3.CharacterController和Rigidbody的区别?Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的。
4.物体发生碰撞时,有几个阶段,分别对应的函数?三个阶段,OnCollisionEnter/Stay/Exit函数5.物体发生碰撞时,几种施加压力的方式,描述出来?rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数6.Unity3d提供了几种光源,分别是什么?共4种,DirectionalLight、PointLight、SpotLight、AreaLight(用于烘焙)7.物理更新一般在哪个系统函数里?FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染帧效率低下的时候FixedUpdate调用次数就会跟着下降。
FixedUpdate比较适合用于物理引擎的计算,因为是跟每帧的渲染有关。
Update就比较适合做控制。
8.移动相机动作在哪个函数里,为什么在这个函数里。
LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。
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常见面试题最先执行的方法是:1、(激活时的初始化代码)Awake,2、Start、3、Update 【FixUpdate、LateUpdate】、4、(渲染模块)OnGUI、5、再向后,就是卸载模块(TearDown),这里主要有两个方法OnDisable与OnDestroy高频问答的问题:1.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作。
渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。
主要步骤有:本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。
2.如何优化内存?有很多种方式,例如A、压缩自带类库;B、将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;C、释放AssetBundle占用的资源;AssetBundle资源包D、降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;E、使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
3.动态加载资源的方式?(有时候也问区别,具体请百度)1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。
Resources.Load();2.通过bundle的形式:即将资源打成asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。
AssetBundle3.通过AssetDatabase.loadasset :这种方式只在editor范围内有效,游戏运行时没有这个函数,它通常是在开发中调试用的【AssetDatabase 资源数据库】区别:Resources的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以unity 推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。
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 的那张原始⽚计算出来的图⽚效果要好得多,速度也更快.当然你不需要回答这些原理,简单描述⼀下即可。
unity游戏开发面试题

unity游戏开发面试题IntroductionUnity游戏开发是目前非常热门的领域,许多技术人员都对此感兴趣。
本文将介绍一系列与Unity游戏开发相关的面试题,帮助读者准备好面试中可能会遇到的各种问题。
以下是一些常见的Unity游戏开发面试题:1. 请简要介绍一下Unity引擎和其主要特点。
Unity引擎是一款跨平台的实时开发工具,广泛用于游戏开发、虚拟现实(VR)和增强现实(AR)应用程序开发等。
它的主要特点包括极佳的跨平台性能、丰富的开发工具和资源、强大的可视化编辑器以及广泛的社区支持。
2. 请解释一下Unity中的Prefab是什么,以及它的作用。
在Unity中,Prefab是一种模板或者蓝图,用于创建游戏对象。
它可以被多次实例化,使开发者能够快速创建和重复使用游戏中的元素,例如角色、道具或者敌人。
Prefab还可以被动态修改,使游戏对象的属性、组件和行为能够灵活地被调整。
3. 请简单描述一下Unity中的碰撞检测系统是如何工作的。
Unity中的碰撞检测系统基于物理引擎实现。
当两个具有碰撞体组件的游戏对象接触时,物理引擎会自动检测碰撞,并触发相应的事件。
开发者可以根据需要编写代码来响应这些事件,例如处理碰撞效果、计算伤害等。
4. 在Unity中,什么是脚本组件(Script Component)?它们的作用是什么?在Unity中,脚本组件是一种附加到游戏对象的代码文件,用于控制游戏对象的行为和逻辑。
开发者可以使用C#或者Unity提供的JavaScript语言编写脚本。
脚本组件可以实现诸如移动、旋转、动画、输入响应等功能,使游戏对象具有更丰富的交互性和动态性。
5. 请简要介绍一下Unity中的协程(Coroutine)是什么,以及它的用途。
协程是Unity中的一种特殊函数,可以在游戏的异步操作中使用。
通过使用协程,开发者可以实现一种更灵活、简洁的异步编程模式。
协程通常用于实现延时操作、动画序列控制、状态机等功能。
Unity一些面试题整理

60、关于光照贴图A:使用光照贴图比使用实时光源渲染要快B:可以降低游戏内存消耗C、多个物体可以使用同一张光照贴图61、关于Vector3的API,以下说法正确的是?Vector3.forward与Vector3(0,0,1)是一样的意思;62、以下哪个函数在游戏进入新场景后会被马上调用?MonoBehaviour.OnLevelWasLoaded63、什么是导航网格(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(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。
unity3d-高频率面试题目

unity3d-高频率面试题目(单选)选择题(共50题,每题2分)1、NavMeshAgent组件中的Speed指的是?答案:(A)A、导航移动最大速度B、移动速度和旋转速度C、加速度D、移动起始速度2、LeapMotion的核心脚本是?答案:(A)A、HandControllerB、GameControllerC、ControllerD、FingerController3、unity2D平台开发,碰撞方法是()答案:(D)A、OnCollisionEnter(Collision other)B、OnCollisionEnter(Collision2D other)C、OnCollisionEnter2D(Collision other)D、OnCollisionEnter2D(Collision2D other)4、Unity中使用LitJSON,将对象转换成字符串是用哪个方法?答案:(A)A、JsonMapper.ToJson()B、JsonMapper.ToObject()C、JsonMapper.ToGameObject()D、JsonMapper.ToString()5、物理更新一般放到哪个函数里面?答案:(D)A、OnEnableB、AwakeC、StartD、FixedUpdate6、Unity发布安卓程序,Sqlite数据库应该存在那个路径下?答案:(C)A、Application.dataPathB、Application.streamingAssetsPathC、Application.persistentDataPathD、Application.temporaryCachePath7、发布PC端程序,使用WWW加载本地文件,正确的URL是?答案:(C)A、/XXXB、Application.streamingAssetsPath/XXXC、"file://"+Application.streamingAssetsPath+"/xxxx"D、以上都不对8、JSON格式比XML更小,更快,以下说法错误的是?答案:(B)A、数据在键值对中B、数据由分号分隔C、花括号保存对象D、方括号保存数组9、外部引入的DLL需要放到哪个文件夹下?答案:(A)A、PluginsB、ResourcesC、PluginD、Resource10、使用导航系统,想要实现VR效果,船员爬上绳索,肯定需要设置那个属性?答案:(A)A、autoTraverseOffMeshLinkB、autoRepathC、autoBrakingD、currentOffMeshLinkData11、要使用IK,必须使用新版动画,除此之外还需要实现系统自带的什么函数?答案:(A)A、OnAnimatorIK(int layerIndex)B、OnAnimatorIK()C、OnIKAnimator(int layerIndex)D、OnIKAnimation()12、Unity3d提供了一个用于保存和读取数据的类是?答案:(A)A、PlayerPrefsB、ResourceC、DataSaveD、Players13、角色控制器(CharacterController)组件中自动使用重力的方法是?答案:(A)A、SimpleMoveB、MoveC、SimpleMove和MoveD、以上都不对14、Unity中的Light组件,那个属性可以实现图案投影?答案:(A)A、CookieB、FlareC、ShadowTypeD、Color15、移动相机动作最好在哪个函数里?答案:(B)A、UpdateB、LateUpdateC、FixedUpdateD、OnGUI16、物体自身旋转使用的函数是?答案:(C)A、Transform.RotateRound()B、Transform.RotateAt()C、Transform.Rotate()D、Transform.Rotated()17、关于烘焙导航网格,说法错误的是?答案:(C)A、表示为Static的物体才可以烘培B、Drop Height表示能跳下的高度C、Jump Distance表示能跳上的高度D、Agent Radius表示物体能通过的半径18、下列选项中,哪个选项表示从游戏开始到到现在所用的时间?答案:(A)A、Time.timeB、Time.deltaTimeC、Time.timeScaleD、Time.fixedTime19、物体发生碰撞的必要条件是?答案:(C)A、两个物体都有碰撞器即可B、都有刚体即可C、都有碰撞器,至少一个刚体D、都有刚体,至少一个碰撞体20、使用UGUI中的拖拽接口,需要引入那个命名空间?答案:(A)A、UnityEngine.EventSystemsB、UnityEngine.UIC、UnityEngine.EventsD、UnityEngine.Event21、关于动画系统中的融合树,描述错误的是?答案:(D)A、融合树的1D类型是指用一个参数控制融合树B、Blend Tree可以自动融合两个动作,实现自然过渡效果C、2D Simple Directional 类型的融合树,在某一个方向上只能有一个状态D、融合树内部不能嵌套融合树22、关于Avatar,描述错误的是?答案:(C)A、Humanoid和Generic类型的模型,都需要AvatarB、Avatar是骨骼绑定的映射,是系统自动生成C、要使用新版动画,每一个人物模型都必须要有自己的AvatarD、Avatar配置不对,可能导致人物动画无法正常播放23、关于拖尾组件的描述错误的是?答案:(C)A、一般选用粒子效果的材质B、Time表示拖尾的生命周期C、Colors下面可以设置1个颜色D、Autodestruct 勾选后,物体一旦静止,将被自动销毁游戏物体24、关于四元数说法错误的是?答案:(C)A、能避免万向锁B、Quaternion.identity表示没有旋转C、Quaternion.LookRotation()方法不需要参数D、Quaternion.Slerp表示球形插值25、关于预设体,以下说法错误的是?答案:(D)A、空的预设体是白色,非空为蓝色B、反复需要实例化的物体通常设为预设体C、只要预设体原型发生改变,所有Prefab实例都会发生改变D、声音资源可以作为预设体26、Unity引擎自带的回调函数中OnEnable、Awake、Start哪个可能在同一个对象周期中反复的发生?答案:(A)A、OnEnableB、AwakeC、StartD、以上都不对27、导航系统中,想要实现路障效果,需要使用?答案:(A)A、NavMeshAgent和NavMeshObstacle组件B、NavMeshObstacle和OffMeshLink组件C、NavMeshAgent和OffMeshLink组件D、NavMeshAgent和NavMeshLayer组件28、关于射线,以下说法错误的是?答案:(C)A、射线可以用于物体检测B、射线有两个属性,direction和originC、Physics.RaycastAll()用于产生多条射线D、Physics.Raycast()方法可以用射线检测指定层29、关于Unity自己封装了一个Network类,主要用于状态同步,开启服务器的方法是?答案:(D)A、Network.StartServer()B、Network.Listen()C、Network.BeginServer()D、Network.InitializeServer()30、新版动画系统中,模型的Rig模块下,Animation Type不包括?答案:(C)A、HumanoidB、GenericC、NormalD、Legacy31、Sqlite数据库,ExecuteReader方法的作用是?答案:(C)A、连接数库库B、执行命令,返回第一行第一列的值C、执行命令,返回所有结果D、读取数据,返回所有数据,返回值为字符串数组32、UGUI中可以实现穿透效果的组件是?答案:(C )A、Canvas ScalerB、Graphic RaycasterC、Canvas GroupD、Canvas Mask33、LOD优化的是?答案:(C)A、内存B、CPUC、GPUD、以上都不对34、关于XML,描述错误的是?答案:(B)A、XML是可扩展标记语言,用于数据传输B、XML比JSON的可读性更高,占用资源更少C、XML只能有一个根节点D、XML 是W3C的举荐标准35、自动布局控件中,可以实现固定子元素宽高的控件是?答案:(B)A、Horizontal Layout GroupB、Grid Layout GroupC、Vertical Layout GroupD、Content Size Fitter36、关于协程,以下说法正确的是?答案:(A)A、方法的返回值必须为IenumeratorB、协程是多线程C、协程里面不能再次开启另一个协程D、yield return 2;表示等待2帧37、LineRender组件不包含那个属性?答案:(D )A、SetColorB、SetVertexCountC、SetWidthD、SetLength38、光照贴图,描述错误的是?答案:(C)A、烘培完毕,可以删掉灯光B、优化的是GPU的DrawCallC、所有的灯光都可以烘培D、当场景很大时,全局烘培非常费时39、NetworkView默认情况下,不能同步什么属性?答案:(D)A、位置B、刚体C、动画D、脚本40、以下说法正确的是?答案:(A)A、TCP是基于连接的,保证数据正确性,不会丢包B、UDP是基本非连接的,保证了数据顺序,不会丢包C、Unity内部不能使用Socket 编程D、Socket可以发送字符串数据41、关于MVC描述错误的是?答案:(D)A、结构清晰B、减少耦合度C、容易理解、有利于标准化D、减少了代码量和工作量42、关于StreamingAssetsPath路径描述不正确的是?答案:(D)A、该路径在移动端可读不可写B、在安卓路径下是jar:file:///Application.dataPath/!/assetsC、在iOS路径下是Application.dataPath/Data/RawD、在Unity中可以通过Resources.Load()加载该路径下面的资源43、两个4KB的预设体,打包成一个Assetbundle之后,所占空间可能是多少?答案:(C)A、小于4KBB、大于8KBC、小于8KBD、12KB44、以下说法正确的是()答案:(B)A、Sprite Renderer支持的图片类型为TextureB、精灵编辑器Sprite Editor可以给图片添加borderC、使用图集会增加DrawCall 值D、2D游戏无法控制层级关系45、下列选项中,可以找到隐藏物体的方法是?答案:(C)A、GameObject.FindWithTag()B、GameObject.Find()C、transform.Find()D、transform.FindWithTag()46、实现鼠标拉近人物模型,人物模型自动看向摄像机(时时)需要使用什么技术?答案:(B)A、遮罩技术B、动画头部IKC、动画事件D、动画融合47、Unity中鼠标的位置用屏幕的像素坐标表示,描述正确的是()答案:(C)A、左上?为坐标原点(0, 0),右下?为(Screen.width, Screen.height)B、右上?为坐标原点(0, 0),左下?为(Screen.width, Screen.height)C、左下?为坐标原点(0, 0),右上?为(Screen.width, Screen.height)D、右下?为坐标原点(0, 0),左上?为(Screen.width, Screen.height)48、关于动画系统中,要实现边走边换子弹的效果,描述错误的是?答案:(B)A、需要用到遮罩技术B、原有层的权重值需为1C、需要添加AvatarMaskD、在新建层中设置一个空的状态机49、使用导航系统,想获取到达目标点内包含的所有路径,需要用到?答案:(B)A、navMeshAgent.meshB、navMeshAgent.pathC、navMeshAgent.cornersD、navMeshAgent.points50、UGUI中的Canvas不包含那种渲染类型答案:(D )A、Screen Space - overlayB、Screen Space - CameraC、World SpaceD、Camera Space。
unity 面试题

unity 面试题Unity是一款非常受欢迎的游戏开发引擎,许多游戏行业的从业者都希望能够获得在Unity开发方面的工作机会。
为了能够顺利通过Unity面试,你需要对Unity进行深入了解,并准备相应的面试题。
本文将为你提供一些常见的Unity面试题,帮助你在准备面试过程中更加自信和有准备。
1.请简要介绍一下Unity的基本概念和特点。
Unity是一款跨平台的游戏开发引擎,具有以下特点:- 强大的编辑器:Unity提供了可视化的场景编辑器,可以方便地创建、导入和管理游戏场景、资源和素材。
- 支持多平台:Unity支持多个平台,包括PC、移动设备以及主机平台,开发者可以将游戏轻松发布到不同的平台上。
- 脚本编写:Unity使用C#作为主要的编程语言,开发者可以通过编写脚本来实现游戏的逻辑和功能。
- 内置渲染引擎:Unity集成了先进的实时渲染引擎,可以处理复杂的图形渲染和特效效果。
- 社区支持:Unity拥有庞大的开发者社区,提供了丰富的资源、教程和插件,开发者可以借助社区的力量提高开发效率。
2.请介绍一下Unity中的游戏对象(GameObject)和组件(Component)。
游戏对象是Unity中最基本的实体,可以表示游戏中的人物、道具、环境等。
每个游戏对象都可以包含多个组件,用于定义游戏对象的行为和属性。
常见的组件包括:- Transform组件:控制游戏对象的位置、旋转和缩放。
- Renderer组件:负责渲染游戏对象的图形效果。
- Rigidbody组件:添加刚体属性,使游戏对象具有物理效果。
- Collider组件:添加碰撞属性,用于物体之间的碰撞检测。
- AudioSource组件:添加音频属性,用于播放游戏对象的音频。
3.请解释一下Unity中的Prefab是什么?Prefab是Unity中的一种资源类型,它可以理解为游戏对象的模板或蓝图。
通过创建Prefab,你可以定义一个游戏对象的结构和组件,并在场景中复用。
unity 面试题

unity 面试题Unity是一款广泛应用于游戏开发的跨平台游戏引擎,因其强大的功能和易用性,在游戏开发领域享有盛誉。
很多游戏开发者都希望能够在Unity中找到一份满意的工作,因此参加Unity的面试成为了必经之路。
在此提供一些常见的Unity面试题,帮助大家为面试做好准备。
1. 面向对象编程(OOP)的基本概念是什么?面向对象编程是一种程序开发的方法论,它将数据和操作数据的方法封装在一起,使其形成一个可以重复使用的独立对象。
面向对象编程的基本概念包括封装、继承和多态。
2. 请解释封装是什么意思,并举一个Unity中的例子。
封装是一种将数据和操作数据的方法包装在一起的机制,隐藏了内部实现细节,只对外提供有限的接口。
一个常见的Unity中的封装例子是游戏角色类。
角色类可以包含诸如移动、攻击、受伤等方法,而对外则只暴露必要的接口,例如获取生命值、获取角色名称等。
3. 什么是继承?如何在Unity中利用继承?继承是面向对象编程中的一种方式,它允许一个类继承另一个类的属性和方法。
在Unity中,我们可以利用继承来创建具有共同属性和行为的游戏对象。
例如,我们可以创建一个父类"Enemy",包含一些通用的属性和方法,然后派生出子类"Zombie"和"Robot",分别表示不同类型的敌人,子类可以继承父类的属性和方法,并可以添加自己特有的属性和方法。
4. 如何实现在Unity中实现多态?多态是面向对象编程中的一个重要概念,它允许通过父类的引用调用子类的方法,实现了运行时动态绑定。
在Unity中,我们可以使用虚方法(virtual)和重写(override)来实现多态。
例如,我们可以在父类中定义一个虚方法"Attack",然后在子类中使用重写关键字将其重写,从而在运行时根据对象的实际类型调用相应的方法。
5. 在Unity中,什么是游戏物体(GameObject)和组件(Component)?游戏物体(GameObject)是Unity中最基本的实体,可以表示游戏世界中的一个对象,例如玩家角色、敌人或场景中的物体。
unity面试题

unity面试题Unity是一款强大且流行的游戏开发引擎,许多游戏开发人员都渴望能够掌握该技术。
本文将会介绍一些常见的Unity面试题,帮助读者了解面试过程中可能会遇到的问题,并提供相应的答案。
1. 请简要介绍一下Unity引擎。
Unity是一种跨平台的游戏引擎,可以用于开发2D和3D游戏。
它支持多个平台,包括Windows、Mac、Android和iOS等。
Unity提供了一系列的工具和功能,使游戏开发变得更加简单和高效。
2. 请解释一下Unity中游戏对象(Game Objects)和组件(Components)之间的关系。
在Unity中,游戏对象是游戏中的实体,它可以代表角色、物体、摄像机等等。
而组件是游戏对象的一部分,它为游戏对象添加了特定的功能或行为。
例如,渲染器组件可以让游戏对象在屏幕上显示出来,刚体组件可以模拟物理效果等等。
游戏对象可以包含多个组件,并且通过组件之间的交互来实现游戏的功能。
3. 请解释一下Unity中的prefabs是什么,并描述其作用。
在Unity中,prefabs是可重复使用的游戏对象预制件。
通常情况下,我们会创建多个相似的游戏对象,然后将其保存为prefabs,以便在游戏中复用。
prefabs具有模板的属性,使得我们可以在游戏中多次实例化相同的游戏对象,提高开发效率。
当我们对prefabs进行修改时,其它实例也会相应地随之改变。
在Unity中,脚本是一种编写游戏逻辑和行为的方式。
通过编写脚本,我们可以为游戏对象添加特定的功能和行为。
脚本可以被绑定到游戏对象的组件上,当游戏运行时,脚本会根据预定的逻辑来控制游戏对象的行为。
Unity支持C#和UnityScript两种脚本语言,它们提供了丰富的API和组件,方便开发人员进行游戏开发。
5. 请解释一下Unity中的碰撞器(Collider)和刚体(Rigidbody)之间的关系。
在Unity中,碰撞器是一种用于检测碰撞的组件,它可以与其他碰撞器进行交互。
Unity面试题

最近找工作有些受挫,自己也开始补课了。
下面把这段时间看到的些面试题供出来让大家也学习下,题目只是面试官选拔人才的一部分,在研究面试题目的过程中,多检测下自己的不足,及时温习或补习下,最终学到真本事才是最重要的。
祝自己也祝大家好运哈!题目中有些答案有网上搜的,也有个人整理的,有错误或不足的地方,望指正,谢谢!文章最后会有参考的一些网址或资料的链接,有想看原址的朋友可以直接跳到最后哦。
题目归类区(看题目字体颜色识第几部分)ps:下面题目可能稍有点多,翻页会较麻烦,根据题目的颜色辨别是第几部分吧(超链接功能不会,也懒得做了)第一部分1.请简述值类型与引用类型的区别#中所有引用类型的基类是什么3.请简述ArrayList和List<Int>的主要区别4.请简述GC(垃圾回收)产生的原因,并描述如何避免5.请描述Interface与抽象类之间的不同6.下列代码在运行中会产生几个临时对象7.下列代码在运行中会发生什么如何避免8.请简述关键字Sealed用在类声明和函数声明时的作用9.请简述private,public,protected,internal的区别10.反射的实现原理11. .Net与Mono的关系12.简述支持的作为脚本的语言的名称是否支持写成多线程程序如果支持的话需要注意什么的协程和C#线程之间的区别是什么中用于记录节点空间几何信息的组件名称,及其父类名称16.简述四元数的作用,四元数对欧拉角的优点17.向量的点乘、叉乘以及归一化的意义18.矩阵相乘的意义及注意点19.为何大家都在移动设备上寻求原生GUI的替代方案20.请简述如何在不同分辨率下保持UI的一致性21.为什么dynamic font在unicode环境下优于static font的作用描述MeshRender和SkinnedMeshRender的关系与不同23.简述SkinnedMesh的实现原理24.在场景中放置多个Camera并同时处于活动状态会发生什么的作用如何在移动环境的设备下恰当地使用它26.如何销毁一个及其子类27.为什么Unity3D中会发生在组件上出现数据丢失的情况28.如何安全的在不同工程间安全地迁移asset数据三种方法和其他Collider的一个主要不同点30.当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况如何避免、Awake、Start运行时的发生顺序哪些可能在同一个对象周期中反复的发生32.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义如何获知场景中需要加载的数据中material和sharedmaterial的区别第二部分1.请描述游戏动画有哪几种,以及其原理。
unity面试题含答案

unity面试题含答案1. 什么是Unity?Unity是一款跨平台的游戏开发引擎,可用于开发2D和3D游戏。
它提供了一个可视化的开发环境,简化了游戏开发的流程,并支持多种平台,包括Windows、iOS、Android等。
2. 请介绍一下Unity中的场景(Scene)和游戏对象(GameObject)。
场景(Scene)是Unity中的基本概念,用于存储游戏中的内容,如场景中的角色、环境、事件等。
一个Unity项目可以包含多个场景,可以在场景之间切换。
游戏对象(GameObject)是Unity中的基本单元,代表了场景中的可见、可听、可触碰的实体。
游戏对象可以是角色、道具、特效等,同时也可以包含其他游戏对象。
3. 请说明Unity中的组件(Component)是什么?组件(Component)是Unity中的重要概念,它可以附加到游戏对象上,并为游戏对象提供特定的功能。
例如,碰撞器(Collider)组件用于检测游戏对象之间的碰撞,脚本(Script)组件用于编写游戏逻辑代码。
每个游戏对象可以包含多个组件,不同的组件可以协同工作,实现更复杂的功能。
通过添加、删除和配置组件,可以定制游戏对象的行为和外观。
4. 请简要介绍Unity中的物理系统(Physics System)。
Unity中的物理系统用于模拟游戏中的物理行为,如重力、碰撞等。
它分为两个主要部分:刚体系统和碰撞系统。
刚体系统负责处理游戏对象的运动和旋转,例如使角色受重力作用下落。
碰撞系统负责处理游戏对象之间的碰撞,例如角色与墙壁的碰撞。
开发者可以通过配置物理材质、设置刚体属性等来实现所需的物理效果。
5. 请简述Unity中的资源管理机制。
Unity的资源管理机制旨在确保游戏在运行时能够高效加载和使用资源,包括模型、贴图、音频等。
通过将资源放入Unity的资源文件夹中,资源将在项目构建时被打包,然后可以通过代码访问。
Unity提供了一些API来加载和实例化资源,开发者可以根据需要动态加载资源,并在使用完毕后及时释放资源,以避免内存过载和性能问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近unity3d找工作有些受挫,自己也开始补课了。
下面把这段时间看到的些面试题供出来让大家也学习下,题目只是面试官选拔人才的一部分,在研究面试题目的过程中,多检测下自己的不足,及时温习或补习下,最终学到真本事才是最重要的。
祝自己也祝大家好运哈!题目中有些答案有网上搜的,也有个人整理的,有错误或不足的地方,望指正,谢谢!文章最后会有参考的一些网址或资料的链接,有想看原址的朋友可以直接跳到最后哦。
题目归类区(看题目字体颜色识第几部分)ps:下面题目可能稍有点多,翻页会较麻烦,根据题目的颜色辨别是第几部分吧(超链接功能不会,也懒得做了)第一部分1.请简述值类型与引用类型的区别2.C#中所有引用类型的基类是什么3.请简述ArrayList和List<Int>的主要区别4.请简述GC(垃圾回收)产生的原因,并描述如何避免?5.请描述Interface与抽象类之间的不同6.下列代码在运行中会产生几个临时对象?7.下列代码在运行中会发生什么问题?如何避免?8.请简述关键字Sealed用在类声明和函数声明时的作用9.请简述private,public,protected,internal的区别10.反射的实现原理?11. .Net与Mono的关系?12.简述unity3d支持的作为脚本的语言的名称13.Unity3D是否支持写成多线程程序?如果支持的话需要注意什么?14.Unity3D的协程和C#线程之间的区别是什么?15.U3D中用于记录节点空间几何信息的组件名称,及其父类名称16.简述四元数的作用,四元数对欧拉角的优点?17.向量的点乘、叉乘以及归一化的意义?18.矩阵相乘的意义及注意点19.为何大家都在移动设备上寻求U3D原生GUI的替代方案20.请简述如何在不同分辨率下保持UI的一致性21.为什么dynamic font在unicode环境下优于static font22.Render的作用?描述MeshRender和SkinnedMeshRender的关系与不同23.简述SkinnedMesh的实现原理24.在场景中放置多个Camera并同时处于活动状态会发生什么?25.Prefab的作用?如何在移动环境的设备下恰当地使用它?26.如何销毁一个UnityEngine.Object及其子类27.为什么Unity3D中会发生在组件上出现数据丢失的情况?28.如何安全的在不同工程间安全地迁移asset数据?三种方法29.MeshCollider和其他Collider的一个主要不同点?30.当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?31.OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?32.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?33.Unity3D如何获知场景中需要加载的数据?34.MeshRender中material和sharedmaterial的区别?第二部分1.请描述游戏动画有哪几种,以及其原理。
2.alpha blend 工作原理3.写光照计算中的diffuse的计算公式4.lod是什么,优缺点是什么5.两种阴影判断的方法工作原理6.MipMap是什么?作用?7.用u3d实现2d游戏,有几种方式?8.u3d中碰撞器和触发器的区别?9.物体发生碰撞的必要条件10.CharacterController和Rigidbody的区别11.物体发生碰撞时,有几个阶段,分别对应的函数12.u3d中,几种施加力的方式,描述出来。
13.什么叫做链条关节14.物体自旋转使用的函数叫什么15.物体绕某点旋转使用函数叫什么16.u3d提供了一个用于保存读取数据的类,(playerPrefs),请列出保存读取整形数据的函数17.unity3d提供了几种光源,分别是什么18.unity3d从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法。
19.物理更新一般在哪个系统函数里?20.移动相机动作在哪个函数里,为什么在这个函数里。
21.当游戏中需要频繁创建一个物体对象时,我们需要怎么做来节省内存。
22.一个场景放置多个camera并同时处于活动状态,会发生什么23.简述prefab的用处和环境24.如何销毁一个UnityEngine.Object以及其子类25.为什么u3d会出现组件上数据丢失的情况26.u3d下如何安全的在不同工程迁移asset数据第三部分1.什么是渲染管道?2.如何优化内存?3、动态加载资源的方式?4、什么是协同程序?5、你用过哪些插件?第四部分1.反向旋转动画的方法是什么?2.碰撞检测需要物体具备什么属性?3.用代码实现第三角色控制器4.实现吊机吊物体的功能5.获取、增加、删除组件的命令分别是什么?6.Animation.CrossFade命令作用是7.Application.loadLevel命令为8.调试记录到控制台的命令是什么?9.编辑器类存放路径是什么?10.使用原生GUI创建一个可以拖动的窗口命令是什么?11.localPosition与Position的使用区别?12.意义连线13.写一个计时器工具,从整点开始计时,格式为:00:00:0014.写出Animation的五个方法15.怎么拿到一个对象上脚本的方法16.上机题17.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?第五部分1,在类的构造函数前加上static会报什么错?为什么?2,C# String类型比stringBuilder类型的优势是什么?3,C# 函数Func(string a, string b)用Lambda表达式怎么写?4,数列1,1,2,3,5,8,13...第n位数是多少?用C#递归算法实现5,UML图示.答案区:第一部分1. 请简述值类型与引用类型的区别答:区别:1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址。
2.值类型存取快,引用类型存取慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。
4.栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。
5.值类型继承自System.ValueType,引用类型继承自System.Object。
可参考/JimmyZhang/archive/2008/01/31/1059383.html2.C#中所有引用类型的基类是什么答:引用类型的基类是System.Object 值类型的基类是System.ValueType同时,值类型也隐式继承自System.Object3.请简述ArrayList和List<Int>的主要区别答:ArrayList存在不安全类型‘(ArrayList会把所有插入其中的数据都当做Object来处理)装箱拆箱的操作(费时)List是接口,ArrayList是一个实现了该接口的类,可以被实例化。
4.请简述GC(垃圾回收)产生的原因,并描述如何避免?答:GC回收堆上的内存避免:1)减少new产生对象的次数2)使用公用的对象(静态成员)3)将String换为StringBuilder5.请描述Interface与抽象类之间的不同答:抽象类表示该类中可能已经有一些方法的具体定义,但接口就是公公只能定义各个方法的界面,不能具体的实现代码在成员方法中。
类是子类用来继承的,当父类已经有实际功能的方法时该方法在子类中可以不必实现,直接引用父类的方法,子类也可以重写该父类的方法。
实现接口的时候必须要实现接口中所有的方法,不能遗漏任何一个。
参考/seapub/archive/2012/08/08/2628433.html6.下列代码在运行中会产生几个临时对象?答:其实在C#中第一行是会出错的(Java中倒是可行)。
应该这样初始化:string b = new string(new char[]{'a','b','c'});7.下列代码在运行中会发生什么问题?如何避免?答:会产生运行时错误,因为foreach是只读的。
不能一边遍历一边修改。
8.请简述关键字Sealed用在类声明和函数声明时的作用答:类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。
9.请简述private,public,protected,internal的区别答:public:对任何类和成员都公开,无限制访问private:仅对该类公开protected:对该类和其派生类公开internal:只能在包含该类的程序集中访问该类protected internal:protected + internal10.反射的实现原理?答:审查元数据并收集关于它的类型信息的能力。
参考/xuanmingzhiyou@yeah/blog/static/1424776762011612115124188/反射个人认为,就是得到程序集中的属性和方法。
实现步骤:1,导入using System.Reflection;2,Assembly.Load("程序集")加载程序集,返回类型是一个Assembly3,foreach (Type type in assembly.GetTypes()){string t = ;}得到程序集中所有类的名称4,Type type = assembly.GetType("程序集.类名");获取当前类的类型5,Activator.CreateInstance(type); 创建此类型实例6,MethodInfo mInfo = type.GetMethod("方法名");获取当前方法7,mInfo.Invoke(null,方法参数);11. .Net与Mono的关系?答:Mono官网主页Mono is a software platform designed to allow developers to easily createcross platform applications. Sponsored by Xamarin, Mono is an open sourceimplementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.mono是.net的一个开源跨平台工具,就类似java虚拟机,java本身不是跨平台语言,但运行在虚拟机上就能够实现了跨平台。