Unity面试题.docx
《Unity面试题.docx》由会员分享,可在线阅读,更多相关《Unity面试题.docx(17页珍藏版)》请在咨信网上搜索。
1、Unity面试题资料仅供参考Unity面试题一:什么是协同程序?在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,可是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。二:Unity3d中的碰撞器和触发器的区别?碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,能够调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,能够调用OnTriggerEnter/Stay/Exit函
2、数。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就能够用到触发器三:物体发生碰撞的必要条件?两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。四:请简述ArrayList和List的主要区别?#ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)?装箱拆箱的操作(费时)?List是接口,ArrayList是一个实现了该接口的类,能够被实例化五:如何安全的在不同工程间安全地迁移asset数据?三
3、种方法1.将Assets目录和Library目录一起迁移2.导出包,export Package3.用unity自带的assets Server功能六:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中重复的发生Awake >OnEnable->Start,OnEnable在同一周期中能够重复地发生。七:MeshRender中material和sharedmaterial的区别?修改sharedMaterial将改变所有物体使用这个材质的外观,而且也改变储存在工程里的材质设置。不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的
4、材质,使用material替代。八:Unity提供了几种光源,分别是什么四种。平行光:Directional Light点光源:Point Light聚光灯:Spot Light区域光源:Area Light九:简述一下对象池,你觉得在FPS里哪些东西适合使用对象池对象池就存放需要被重复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创立会很费时间,经过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创立,如果池中没有可用的对象,才需要重新创立,利用空间换时间来达到游戏的高速运
5、行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等十:CharacterController和Rigidbody的区别Rigidbody具有完全真实物理的特性,Unity中物理系统最基本的一个组件,包含了常见的物理特性,而CharacterController能够说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的,是Unity为了使开发者能方便的开发第一人称视角的游戏而封装的一个组件十一:简述prefab的用处在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改,同时prefab打包的内容简化了导出的操作,
6、便于团队的交流。十二:请简述sealed关键字用在类声明时与函数声明时的作用sealed修饰的类为密封类,类声明时可防止其它类继承此类,在方法中声明则可防止派生类重写此方法。十三:请简述private,public,protected,internal的区别public:对任何类和成员都公开,无限制访问private:仅对该类公开protected:对该类和其派生类公开internal:只能在包含该类的程序集中访问该类十四:使用Unity3d实现2d游戏,有几种方式?1. 使用本身的GUI,在Unity4.6以后出现的UGUI2.把摄像机的Projection(投影)值调为Ortho
7、graphic(正交投影),不考虑z轴; 3.使用2d插件,如:2DToolKit,和NGUI 十五:在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数 三个阶段,1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit 十六:Unity3d的物理引擎中,有几种施加力的方式,分别描述出来 rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。大家能够自己去查看一下rigidbody的API十七:什么叫做链条关节
8、?Hinge Joint,能够模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,可是达到固定距离后就会产生拉力。十八:物体自身旋转使用的函数?Transform.Rotate() ;物体围绕某点旋转使用的函数?Transform.RotateAround()十九:Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数 PlayerPrefs.SetInt() PlayerPrefs.GetInt() 二十:Unity3d脚本从唤醒到销毁
9、有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。Awake>OnEnable>Start>Update>FixedUpdate>LateUpdate>OnGUI>OnDisable>OnDestroy 二十一:物理更新一般放在哪个系统函数里?FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。二十二:在场
10、景中放置多个Camera并同时处于活动状态会发生什么?游戏界面能够看到很多摄像机的混合。 二十三:如何销毁一个UnityEngine.Object及其子类?使用Destroy()方法; 二十四:请描述为什么Unity3d中会发生在组件上出现数据丢失的情况 一般是组件上绑定的物体对象被删除了二十五:LOD是什么,优缺点是什么?LOD(Level of detail)多层次细节,是最常见的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。缺点是增加了内存。
11、二十六:MipMap是什么,作用?MipMapping:在三维计算机图形的贴图渲染中有常见的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。二十七:请描述Interface与抽象类之间的不同抽象类表示该类中可能已经有一些方法的具体定义,但接口就是公公只能定义各个方法的界面 ,不能具体的实现代码在成员方法中。类是子类用来继承的,当父类已经有实际功能的方法时该方法在子类中能够不必实现,直接引用父类的方法,子类也能够重写该父类的方法。实现接口的时候必须要实现接口中所有的方法,不能遗漏任何一个。二十八:.Net与Mono的关系?
12、mono是.net的一个开源跨平台工具,就类似java虚拟机,java本身不是跨平台语言,但运行在虚拟机上就能够实现了跨平台。.net只能在windows下运行,mono能够实现跨平台跑,能够运行于linux,Unix,Mac OS等。二十九:简述Unity3D支持的作为脚本的语言的名称Unity的脚本语言基于Mono的.Net平台上运行,能够使用.NET库,这也为XML、数据库、正则表示式等问题提供了很好的解决方案。Unity里的脚本都会经过编译,她们的运行速度也很快。这三种语言实际上的功能和运行速度是一样的,区别主要体现在语言特性上。JavaScript、 C#、Boo三十:U3D中用于记
13、录节点空间几何信息的组件名称,及其父类名称Transform 父类是 Component三十一:向量的点乘、叉乘以及归一化的意义?1.点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影2.叉乘得到的向量垂直于原来的两个向量3.标准化向量:用在只关系方向,不关心大小的时候三十二:为何大家都在移动设备上寻求U3D原生GUI的替代方案不美观,OnGUI很耗费时间,效率不高,使用不方便三十三:请简述如何在不同分辨率下保持UI的一致性NGUI很好的解决了这一点,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟原来的预设的屏幕分辨率求出一个对比值,然后修改摄像机的size。UGUI经过锚点
14、和中心点和分辨率也解决这个问题三十四:什么是LightMap?LightMap:就是指在三维软件里实现打好光,然后渲染把场景各表面的光照输出到贴图上,最后又经过引擎贴到场景上,这样就使物体有了光照的感觉。三十五:Unity和cocos2d的区别1. Unity3D支持C#、javascript等,cocos2d-x 支持c+、Html5、Lua等。2. cocos2d 开源 而且免费3. Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平台的游戏开发,cocos2d-x支持iOS、Android、WP等。三十六:C#和C+的区别?简单的说:C#
15、与C+ 比较的话,最重要的特性就是C# 是一种完全面向对象的语言,而C+ 不是,另外C# 是基于IL 中间语言和.NET Framework CLR 的,在可移植性,可维护性和强壮性都比C+ 有很大的改进。C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也能够经过Interop 和Pinvoke 完成一些底层操作。更详细的区别大家能够参考这里三十七:结构体和类有何区别?结构体是一种值类型,而类是引用类型。(值类型、引用类型是根据数据存储的角度来分的)就是值类型用于存储
16、数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则经过引用来对实际数据操作三十八:ref参数和out参数是什么?有什么区别?ref和out参数的效果一样,都是经过关键字找到定义在主函数里面的变量的内存地址,并经过方法体内的语法改变它的大小。不同点就是输出参数必须对参数进行初始化。ref必须初始化,out 参数必须在函数里赋值。ref参数是引用,out参数为输出参数。三十九:C#的委托是什么?有何用处?委托类似于一种安全的指针引用,在使用它时是当做类来看待而不是一个方法,相当于对一组方法的列表的引用。用处:使用委托使程序员能够将方法引用封装在委托对象内。然后能够将该委
17、托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C+中的函数指针不同,委托是面向对象,而且是类型安全的。四十:C#中的排序方式有哪些?选择排序,冒泡排序,快速排序,插入排序,希尔排序,归并排序四十一:射线检测碰撞物的原理是?射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其它物体发生碰撞时,它将停止发射 。四十二:Unity中,照相机的Clipping Planes的作用是什么?调整Near、Fare两个值时,应该注意什么?剪裁平面 。从相机到开始渲染和停止渲染之间的距离。四十三:如何让已经存在的GameObject在Load
18、Level后不被卸载掉?void Awake() DontDestroyOnLoad(transform.gameObject);四十四:请简述GC(垃圾回收)产生的原因,并描述如何避免?GC回收堆上的内存避免:1.减少new产生对象的次数2.使用公用的对象(静态成员)3.将String换为StringBuilder四十五:反射的实现原理?审查元数据并收集关于它的类型信息的能力。实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤:1. 导入using System.Reflection;2. Assembly.Load(“程序集”)加载程序集,返回类型
19、是一个Assembly3. 得到程序集中所有类的名称foreach (Type type in assembly.GetTypes() string t = type.Name;4. Type type = assembly.GetType(“程序集.类名”);获取当前类的类型5. Activator.CreateInstance(type); 创立此类型实例6. MethodInfo mInfo = type.GetMethod(“方法名”);获取当前方法7. m.Info.Invoke(null,方法参数);四十六:简述四元数的作用,四元数对欧拉角的优点?四元数用
20、于表示旋转相对欧拉角的优点:1.能进行增量旋转2.避免万向锁3.给定方位的表示方式有两种,互为负(欧拉角有无数种表示方式)四十七:移动相机动作在哪个函数里,为什么在这个函数里?LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,可是视角里还未有角色的空帧出现。四十八:GPU的工作原理简而言之,GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序) 顶点处理:这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3
21、D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Vertex Shader(定点着色器)完成。 光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线经过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。 纹理帖图:顶点单元生成的多边形只构成了3D物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴
22、上相应的图片,从而生成“真实”的图形。TMU(Texture mapping unit)即是用来完成此项工作。 像素处理:这阶段(在对每个像素进行光栅化处理期间)GPU完成对像素的计算和处理,从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Pixel Shader(像素着色器)完成。 最终输出:由ROP(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。 总结:GPU的工作通俗的来说就是完成3D图形的生成,将图形映射到相应的像素点上,
23、对每个像素进行计算确定最终颜色并完成输出。四十九:什么是渲染管道? 是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有: 本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化五十:如何优化内存?有很多种方式,例如 1.压缩自带类库; 2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉; 3.释放AssetBundle占用的资源; 4.降低模型的片面数,
24、降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。6.代码中少产生临时变量五十一:动态加载资源的方式?她们之间的区别1.Resources.Load();2.AssetBundle 区别参考五十二:请描述游戏动画有哪几种,以及其原理?主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。 关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画; 骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,
25、骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观; 单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。五十三:alpha blend工作原理 Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。五十四:写出光照计算中的diffuse的计算公式 diffuse = Kd x colorLight x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity 试题
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。