Unity3d面试题总结

本人总结的一些Unity3d高频面试题目,希望可以帮助到大家。 限于个人水平有限,只附上一些参考答案。

======================================= 数据结构和算法很重要,图形学也很重要!

大的游戏公司很看重个人基础、综合能力;

小公司看你实际工作能力,看你的Demo。

高频问答的问题:

一.什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。

主要步骤有:

本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。

二.如何优化内存?

有很多种方式,例如

1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

3.释放AssetBundle占用的资源;

4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

三、动态加载资源的方式?(有时候也问区别,具体请百度)

1.Resources.Load();

2.AssetBundle

四、什么是协同程序?

在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。

五、你用过哪些插件?

(最好多熟悉几个插件,问的时候好回答)

====================================================

1.使用Unity3d实现2d游戏,有几种方式?

1.使用本身的GUI;

2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;

3.使用2d插件,如:2DToolKit;

2.Unity3d中的碰撞器和触发器的区别?

碰撞器有碰撞的效果,IsTrigger=false,可以调用

OnCollisionEnter/Stay/Exit函数;

触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。

3.物体发生碰撞的必要条件

两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。

4.CharacterController和Rigidbody的区别?

CharacterController自带胶囊碰撞器,里面包含有刚体的属性; Rigidbody就是刚体,使物体带有刚体的特征。

5.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数 三个阶段

1.OnCollisionEnter

2.OnCollisionStay

3.OnCollisionExit

6.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来 rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。

7.什么叫做链条关节?

Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。

8.物体自身旋转使用的函数?

Transform.Rotate()

9.物体围绕某点旋转使用的函数?

Transform.RotateAround()

10.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数

PlayerPrefs.SetInt()

11.Unity3d提供了几种光源类型,分别是哪几种?

四种。

平行光:Directional Light

聚光灯:Spot Light

12.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。 点光源:Point Light 区域光源:Area Light PlayerPrefs.GetInt()

Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy

13.物理更新一般放在哪个系统函数里?

FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

14.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?

LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。

15.当游戏中需要频繁创建一个物体时,我们需要怎样做能够节省内存?

使用预制物体对象Prefab,然后复制创建。

16.在场景中放置多个Camera并同时处于活动状态会发生什么?

游戏界面可以看到很多摄像机的混合。

17.请描述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它?

Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。

18.如何销毁一个UnityEngine.Object及其子类?

使用Destroy()方法;

19.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?

1.可以把assets目录和Library目录一起迁移

2.导出包

3.用Unity带的assets Server功能

20.请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。 关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;

骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,

骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;

单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。

21.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况 一般是组件上绑定的物体对象被删除了

22.alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。

23.写出光照计算中的diffuse的计算公式

diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。

24.Lod是什么,优缺点是什么?

LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

25.两种阴影判断的方法、工作原理。

26.Vertex Shader是什么,怎么计算?

顶点着色器

27.MipMap是什么,作用?

MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。

28.机试:二选一

1.用代码实现第三角色控制器

2.实现吊机吊物体的功能

29.反向旋转动画的方法是什么?

30.碰撞检测需要物体具备什么属性?

31.获取、增加、删除组件的命令分别是什么?

获取:GetComponent

增加:AddComponent

删除:Destroy

32.Animation.CrossFade命令作用是:(C)

A.动画放大 B.动画转换 C.动画的淡入为其他动画

33.Application.loadLevel命令为:(A)

A.加载关卡 B.异步加载关卡 C.加载动作

34.调试记录到控制台的命令是什么?

Debug.Log();

35.编辑器类存放路径是什么?

工程目录下的Assets/Editor文件夹下。

36.使用原生GUI创建一个可以拖动的窗口命令是什么? GUI.DragWindow();

37.localPosition与Position的使用区别?

localPosition:自身位置,相对于父级的变换的位置。 Position:在世界坐标transform的位置

38.意义连线

Mathf.Round

Mathf.Clamp

Mathf.Lerp

插值 四舍五入 限制

39.写一个计时器工具,从整点开始计时,格式为:00:00:00

40.写出Animation的五个方法

41.怎么拿到一个对象上脚本的方法

GameObject.GetComponent<>();

42.上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。

43.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义? 点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;

叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;参考:.cn/s/blog_9283b6f601017hfw.html

 

第二篇:Unity3D面试题

Ps:本测试题目转载自Unity3D教程手册,如有侵权,请与我

hong200795@163.com联系,我即使撤销转载

Unity应用能力认证 (Unity Certified User)测试试题

适合多媒体专业,3D专业,游戏专业,美术专业的学生及Unity初学者。

证明您已经拥有Unity引擎的基础知识。

Name: Q Q: E-mail:

1. 哪种实时光源是Unity中没有的?

A:点光源

B:方向光

C:聚光灯

D:日光灯

2. 如何在Unity中创建地形系统?

A:Terrain->Create Terrain

B:Component->Create Terrain

C:Asset->Create Terrain

D:Windows->Create Terrain

3. 以下哪种操作步骤可以在场景中添加“Wind Zone”? A:Terrain -> Wind Zone

B:GameObject -> Create Other -> Wind Zone

C:Component -> Physics -> Wind Zone

D:Assets -> Create -> Wind Zone

4. 在Unity编辑器中创建一个Directional Light,以下步骤正确的是?

A:Edit -> Rendering Setting -> Directional Light

B:GameObject -> Create Other -> Directional Light

C:Component -> Rendering -> Directional Light

D:Assets -> Directional Light

5. 下列哪一项不属于Camera中的“Clear Flags”?

A:Skybox

B:Solid Color

C:Depth Only

D:Background

6. 以下哪种脚本语言是Unity编辑器所不支持的?

A:JavaScript

B:C#

C:Boo

D:Perl

7. 对于Prefab,以下说法错误的是?

A:Prefab资源可以在项目中多次重复使用

B:由Prefab实例出的GameObject,其在Hierarchy视图中表现为蓝色

C:Prefab上的组件信息一经改变,其实例出的GameObject也会自动改变

D:实例出的GameObject上的组件信息一经改变,其对应的Prefab也会自动改变

8. 下面哪种做法可以打开Unity的Asset Store?

A:Windows -> Asset Store

B:Edit -> Asset Store

C:File -> Asset Store

D:Assets -> Asset Store

9. 在哪个面板中可以修改物体的空间属性,如位置、朝向、大小等?

A:Project

B:Inspector

C:Hierarchy

D:Toolbar

10. 如何为一个Asset资源设定一个Label,从而能够方便准确的搜索到?

A:在Project窗口中选中一个Asset,右键->Create->Label

B:在Project窗口中选中一个Asset,右键->Add Label

C:在Project窗口中选中一个Asset,在Inspector窗口中点击添加Label的图标

D:在Project窗口中选中一个Asset,在Inspector窗口中点击按钮“Add Label”

Unity专业能力认证 (Unity Certified Professional)测试试题 面向 C# 或 JavaScript 程序员,证明您已经拥有Unity引擎的专业知识,能够根据广泛的业界需求开发项目。 Name: Q Q: E-mail:

1. Mecanim系统中,Body Mask的作用是?

A:指定身体的某一部分是否参与骨骼动画

B:指定身体的某一部分是否参与物理模拟

C:指定身体的某一部分是否可以输出骨骼信息

D:指定身体的某一部分是否参与渲染

2. 以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?

A:File --> Lightmapping

B:Assets --> Lightmapping

C:Windows --> Lightmapping

D:Component --> Lightmapping

3. 下列关于光照贴图,说法错误的是?

A:使用光照贴图比使用实时光源渲染要快

B:可以降低游戏内存消耗

C:可以增加场景真实感

D:多个物体可以使用同一张光照贴图

4. 如何为物体添加光照贴图所使用的UV?

A:不用添加,任何时候都会自动生成

B:更改物体导入设置,勾选”Generate Lightmap UVs”

C:更改物体导入设置,勾选 “Swap UVs”

D:更改物体导入设置,在UVs 选项中选择” Use Lightmaps”

5. 在哪个模块下可以修改Render Path?

A:Camera

B:Light

C:Render Settings

D:Project Settings->Quality

6. 以下哪项技术不是目前Unity所支持的Occlusion Culling技术?

A:PVS only

B:PVS and dynamic objects

C:Automatic Portal Generation

D:Dynamic Only

7. 关于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.OnSceneWasLoaded

B:MonoBehaviour.OnSceneEnter

C:MonoBehaviour.OnLevelWasLoaded

D:MonoBehaviour.OnLevelEnter

9. 什么是导航网格( NavMesh)?

A:一种用于描述相机轨迹的网格

B:一种被优化过的物体网格

C:一种用于物理碰撞的网格

D:一种用于实现自动寻路的网格

10. 下列那些选项不是网格层属性的固有选项?

A:Default

B:Walkable

C:Not Walkable

D:Jump

相关推荐