史上最全的Unity面试题(一)
unity3d面试题与参考答案

unity3d⾯试题与参考答案1、C#程序题1 2 3 4 5 6 7 8 9 10 11private static void aaa(int x) { x = 10; } private static void bbb(ref int x) { x = 10; } static void Main(string[] args){int x = 0; aaa(x); //现在x的值是:___ bbb(ref x); //现在x的值是:___}答案:0,,10。
详细解答:⼀个是复制⼀份值过去,⼀个是把地址传过去2、英⽂翻译题(把下⾯⽂字翻译成中⽂)Transform.LocalPositionvar localPosition:Vector3;Description:Position of the transform relative to the parent transform.If the transform has no parent,it is the same as Transform.position.Note that the parent transform's world rotation and scale are applied to the local position when calculating the world position.This means that while 1 unit in Transform.position is always 1 unit in transform.localPosition will get scaled by the scale of all ancestors.描述:相对于⽗级的变换的位置。
如果该变换没有⽗级,那么等同于Transform.position。
注意当计算世界的位置时,⽗级变换的世界旋转和缩放被应⽤到⾃⾝的位置。
游戏公司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常见面试题】本帖最后由小布丁~ 于 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⾯试题(⼀)第⼀部分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高级工程师面试题

unity高级工程师面试题Unity3D工程师一:值类型和引用类型有何区别?(6分)二:C#中所有引用类型的基类是什么?(4分)三:结构体和类有何区别?(5分)四:请描述Interface与抽象类之间的不同(5分)五:请简述GC(垃圾回收)产生的原因,并描述如何避免?(5分)六:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
(5分)七:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?(5分)八:物理更新一般放在哪个系统函数里?(5分)九:CharacterController和Rigidbody的区别?(5分)十:MeshRender中material和sharedmaterial的区别?(5分)十一:什么是协同程序?(5分)十二:什么是渲染管道?(5分)十三:.Net与Mono的关系?(4分)十四:向量的点乘、叉乘以及归一化的意义?(6分)十五:Heap与Stack有何区别?(5分)十六:概述序列化:(5分)十七.如何优化内存?(10分)十八:N个元素取出最大(小)的K个元素,请说明思路及算法?(10分二十一:物理更新一般放在哪个系统函数里?FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。
FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。
Update就比较适合做控制。
二十二:在场景中放置多个Camera并同时处于活动状态会发生什么?游戏界面可以看到很多摄像机的混合。
二十三:如何销毁一个UnityEngine.Object及其子类?使用Destroy()方法;二十四:请描述为什么Unity3d中会发生在组件上出现数据丢失的情况一般是组件上绑定的物体对象被删除了二十五:LOD是什么,优缺点是什么?LOD(Levelofdetail)多层次细节,是最常用的游戏优化技术。
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面试题模板

近来 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.请描绘游戏动画有哪几种,以及其原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:什么是协同程序?
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,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 Package
3.用unity自带的assets Server功能
六:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生
Awake –>OnEnable->Start,OnEnable在同一周期中可以反复地发生。
七:MeshRender中material和sharedmaterial的区别?
修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。
不推荐修改由sharedMaterial返回的材质。
如果你想修改渲染器的材质,使用material 替代。
八:Unity提供了几种光源,分别是什么
四种。
平行光:Directional Light
点光源:Point Light
聚光灯:Spot Light
区域光源:Area Light
九:简述一下对象池,你觉得在FPS里哪些东西适合使用对象池
对象池就存放需要被反复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创建会很费时间,通过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等
十:CharacterController和Rigidbody的区别
Rigidbody具有完全真实物理的特性,Unity中物理系统最基本的一个组件,包含了常用的物理特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的,是Unity为了使开发者能方便的开发第一人称视角的游戏而封装的一个组件。