Unity面试题——Unity编辑器基础

简介: Unity面试题——Unity编辑器基础

40.请描述游戏动画有几种,以及其原理。

主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。关节动画把角色分成若干独立部分, 一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活 Quake2 中使用了这 种动画。单一网络模型动画由一个完整的网格模型构成, 在动画序列的关键帧里记录各个顶点的原位 置及其改变量,然后插值运算实现动画效果,角色动画较真实。骨骼动画,广泛应用的动画方式,集 成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤 作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现 完美的动画。(骨骼动画是由关节动画发展而来的,如今基本都使用骨骼动画来实现角色动画)

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

物体 A 必须带有(collider+rigidbody)或者 CharacterController,另一个物体也必须至少带有 collider

42.GUI 与 UGUI 的优点和缺点

GUI 不方便控制,UGUI 所见即所得,方便控制。GUI 使用在生命周期函数 OnGUI 中使用,脚本来书写 控制。UGUI 使用 Canvas 画布和事件系统。UGUI 适应屏幕上比 GUI 简单。

43.一个场景放置多个 carmera 并同时处于活动状态,会发生什么

实际看到的画面由多个 camera 的画面组成,由 depth、Clear Flag、Culling Mask 都会影响最终合成效果。

44.使用过哪些第三方插件?

一、界面制作 推荐:NGUI

二、2D 游戏制作 推荐:2D Toolkit //[ˈtu:lkɪt] 工具包,工具箱

三、可视化编程 推荐:PlayMaker

四、插值插件 推荐:iTween,HOTween

五、路径搜寻 推荐:Simple Path

六、美术及动画制作 推荐:RageSpline,Smooth Moves

七、画面增强 推荐:Bitmap2Material,Strumpy Shader Editor

八、摄像机管理 推荐:Security Camera

九、资源包 推荐:Nature Pack

十、造路插件 EasyRoads3D

45.U3D 中用于记录节点空间几何信息的组件名称,及其父类名称

Transform 父类是 Component

46.为何大家都在移动设备上寻求 U3D 原生 GUI 的替代方案

不美观,OnGUI 很耗费时间,使用不方便 ,DrawCall

47.请简述如何在不同分辨率下保持 UI 的一致性

NGUI 很好的解决了这一点,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟原来的预设的屏 幕分辨率求出一个对比值,然后修改摄像机的 size。

48.为什么 dynamic font 在 unicode 环境下优于 static font

Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。使用动态字体时,Unity 将不会预先生成一个与所有字体的字符纹理。当需要支持亚洲语言或者较大的字体的时候,若使用正 常纹理,则字体的纹理将非常大。

49.Render 的作用?描述 MeshRender 和 SkinnedMeshRender 的关系与不 同

Mesh 就是指模型的网格(同名组件是用于调整网格属性的),MeshFilter 一般是用于获得模型网格的 组件,而 MeshRender 是用于把网格渲染出来的组件

50. 简述 SkinnedMesh 的实现原理

Skinned Mesh 中文一般称作骨骼蒙皮动画.这种动画中包含骨骼( Bone )和蒙皮 (Skinned Mesh) 两个部 分, Bone 的层次结构和关节动画类似, Mesh 则和关节动画不同:关节动画中是使用多个分散的 Mesh, 而 Skinned Mesh 中 Mesh 是一个整体,也就是说只有一个 Mesh, 实际上如果没有骨骼让 Mesh 运 动变形, Mesh 就和静态模型一样了。Skinned Mesh 技术的精华在于蒙皮,所谓的皮并不是模型的贴 图。而是 Mesh 本身,蒙皮是指将 Mesh 中的顶点附着(绑定)在骨骼之上,而且每个顶点可以被多个 骨骼所控制,这样在关节处的顶点由于同时受到父子骨骼的拉扯而改变位置就消除了裂缝。可以理解 为具有蒙皮信息的 Mesh 或可当做皮肤用的 Mesh ,这个皮肤就是 Mesh 。而为了有皮肤功能, Mesh 还需要蒙皮信息,即 Skin 数据,没有 Skin 数据就是一个普通的静态 Mesh 了。 Skin 数据决定顶点如何 绑定到骨骼上。顶点的 Skin 数据包括顶点受哪些骨骼影响以及这些骨骼影响该顶点时的权重 (weight) , 另外对于每块骨骼还需要骨骼偏移矩阵 (BoneOffsetMatrix) 用来将顶点从 Mesh 空间变换到骨骼空间。

51.Prefab 的作用?如何在移动环境的设备下恰当地使用它?

在游戏运行时实例化,prefab 相当于一个模版,对你已有的素材、脚本、参数做一个默认配置,以便 于以后修改,同时 prefab 打包的内容简化了导出的操作,便于团队的交流。

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

Destory

53.为什么 Unity3D 中会发生在组件上出现数据丢失的情况?

组件上绑定的对象被删除了

54.MeshCollider 和其他 Collider 的一个主要不同点?

Meshcollider 是基于顶点的。建议还是用 boxcollider,boxcollider 本身是基于算法,没有面的概念。

55.当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何 避免?

穿透(碰撞检测失败)(碰撞体变大,FixedUpdate, 代码限制)

56.MeshRender 中 material 和 sharedmaterial 的区别?

修改 sharedMaterial 将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。 不推荐修改由 sharedMaterial 返回的材质。如果你想修改渲染器的材质,使用 material 替代。

57.用 u3d 实现 2d 游戏,有几种方式?

1.利用引擎自带的 GUI 和 2D 系统

2.把摄像机设为 Orthographic,用面片作为 2d 元素

3.利用第三方插件:NGUI、2dToolkit

58.u3d 中碰撞器和触发器的区别?

collider 碰撞器会有碰撞的效果,IsTrigger = false, 可以调用 OnCollisionEnter/Stay/Exit 函数 trigger 触发器 没有碰撞效果, isTrigger = true,可以调用 OnTriggerEnter/stay/exit 函数

59.CharacterController 和 Rigidbody 的区别

Rigidbody 具有完全真实物理的特性, 而 CharacterController 可以说是受限的 Rigidbody,具有一定的物 理效果但不是完全真实的。

60.什么叫做链条关节

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

61.unity3d 提供了几种光源,分别是什么

平行光:Directional Light

聚光灯:Spot Light

点光源:Point Light

区域光源:Area Light(只用于烘培)

62.u3d 下如何安全的在不同工程迁移 asset 数据

方法 1,可以把 assets 目录和 Library 目录一起迁移,

方法 2,导出包

方法 3,用 unity 带的 assets server 功能

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

触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。

碰撞器有碰撞的效果,IsTrigger=false,可以调用 OnCollisionEnter/Stay/Exit 函数;

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

a.如果不想让碰撞检测影响物体移动但是又想检测到碰撞这时用到触发器(Trigger)

b.触发器用来检测一个物件是否经过空间中的某个区域

64.动画层(Animation Layers)的作用是什么?

动画层作为一个具有层级动画编辑概念的工具, 可以用来制作和处理任何类型的动画

65.Material 和 Physic Material 区别?

PhysicMaterial 物理材质:物理材质描述,如何处理物体碰撞(摩擦,弹性)。Material 材质(材质类) 为了获得一个对象使用的材质,可以使用 Renderer.materia 属性66.什么是导航网格(NavMesh)? 一种用于实现自动寻路的网格

67.请简述 NGUI 中 Panel 和 Anchor 的作用

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

68.Unity 摄像机有几种工作方式,分别是什么?

perspective 透视摄像机和 orthographic 正交摄像机

69.LayerMask.NameToLayer()这个方法有什么作用?

LayerMask 的使用是按位操作的,LayerMask.NameToLayer(“Players”) 返回该 Layer 的编号。

70.NGUI 与 UGUI 的优点和缺点

  1. NGUI 还保留着图集,需要进行图集的维护。而 UGUI 没有图集的概念,可以充分利用资源,避免重 复资源。
  2. UGUI 出现了锚点的概念,更方便屏幕自适应。
  3. NGUI 支持图文混排,UGUI 暂未发现支持此功能。
  4. UGUI 没有 UIWrap 来循环 scrollview 内容。
  5. UGUI 暂时没有集成 Tween 组件。

71.是否熟悉 UGUI

熟悉,之前在一些项目用 UGUI 做过界面,和 NGUI 很相似。

72.会写插件么?

了解过,但在公司这块用的比较少,没怎么写过,不过我能很快学会。

73.UGUI 和 NGUI 的区别?为什么不使用 NGUI?

1、uGUI 的 Canvas 有世界坐标和屏幕坐标,NGUI 有 2D 和 3D 区别。

2、uGUI 的 Image 可以使用 material。

3、UGUI 通过 Mask 来裁剪,而 NGUI 通过 Panel 的 Clip

4、NGUI 的渲染前后顺序是通过 Widget 的 Depth,而 UGUI 渲染顺序根据 Hierarchy 的顺序,越下面渲 染在顶层。

  1. 、UGUI 不需要绑定 Colliders,UI 可以自动拦截事件。
  2. 、UGUI 的 Anchor 是相对父对象,没有提供高级选项,个人感觉 uGUI 的 Anchor 操作起来比 NGUI 更方便

7、UGUI 没有 Atlas 一说,使用 Sprite Packer。

8、UGUI 的 Navgation 在 Scene 中能可视化。

9、UGUI 的事件需要实现事件系统的接口,但写起来也算简单。

10、NGUI 功能更丰富一些 之所以不用 NGUI 是因为 UGUI 是 Unity 官方推出的,慢慢会成为制作 UI 的主要工具,配套的插件也越 来越多,但是具体使用 NGUI 还是 UGUI 还要看公司这边,因为这两个我都用过一段时间。

74.UI 用的是 NGUI 还是 UGUI?

两个都用过。之前用的 NGUI 后来用了 UGUI。

75.Unity3d 中 static batching 和 dynamic batching 各有什么用?

Dynamic Batching 不需要任何操作,只要共享材质(即使是不同的 Mesh 模型也可以),就会自动被合并。 可以自由移动旋转。但有以下使用要求:

(1) 模型文件共计点数不超过 900。(重复使用同一个 Mesh 不计)

(2) 单个物体可以不超过 300 点,Shader 可以有法线 UV。 但如果 Shader 使用了 UV0 UV1 两套 UV,或者 Tangent 切线的话,单个物体只能不超过 180 点

(3)游戏对象使用相同模型和材质时,只有相同缩放(即 xyz 等比缩放,浮点尾数可以有细微差)的会被合

并。如 (1,1,1)与(1,1,1) (2,2,2)与(2,2,2) (0.5,0.5,0.5)与 (0.5,0.5,0.5) (2,2,2)与(2,2,2.0001)

(4)场景烘焙:烘焙后同材质将不会被烘焙。lightmap 有隐藏的材质参数:offset/scale, 所以使用

lightmap 的物体不会被合并

(5)Shader 不能使用多 Pass:多 Pass 的 Shader 会破坏 Dynamic Batching Static Batching

原理:运行游戏后将一组游戏对象的多个模型会被动态合并为 1 个。这组游戏对象所有使用同一材质 的在一个 DrawCall 来完成。这些游戏对象运行后无法移动缩放旋转。但是 Drawcall 一定是最大化合并 的,并且不受动态合并的诸多限制(见下文详述)。

注意:即使物体都使用了同样的模型,在 batch 后每一个物体都会创建一份模型对应的 geometry,在新 的 Combined Mesh 里。所以过多的 batch 会增加内存占用。例如场景里的树群就不适合 Static Batch, 而适合动态合并。实现方法:

(1)MeshRenderer 勾选 Batching Static: 勾了即可

(2)代码中使用 UnityEngine.StaticBatchingUtility 实现(可以在任何平台调用):

1)将所有要合并的静态物体(不须勾 Batching Static)放入统一一个 root

2)StaticBatchingUtility.Combine(root); 之后就合并好了!

区别:勾选 Batching Static:完全自动合并,在 MeshFilter 里显示的是 Combined Mesh(root:scene)。合并 后不能移动

StaticBatchingUtility:合并到一个游戏对象下。合并后可以移动父节点游戏对象"

76.Unity3d 中 Awake 和 Start 谁先执行,update 和 fixedUpdate 有什么区

别?

Awake 先执行。Update 是在每次渲染新的一帧的时候才会调用,FixedUpdate,是在固定的时间间隔执 行,不受游戏帧率(fps)的影响 ,FixedUpdate 的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到 Fixed timestep。就可以修改了

77.Unity 引擎中以下对 Mesh Renderer 组件描述正确的是哪一项? C

A.Mesh Renderer 组件决定了场景中游戏对象的位置,旋转和缩放

B.为场景中的某一游戏对象增添物理的特性,需要为该游戏对象添加 Mesh Renderer 组件

C.Mesh Renderer 组件从 Mesh Filter 组件中获得网格信息,病根据物体的 Transform 组件所定义的位 置进行渲染

D.Mesh Renderer 是从网格资源中获取网格信息的组件

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

A:点光源

B:方向光

C:聚光灯

D:日光灯

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

A:Terrain->Create Terrain

B:Component->Create Terrain

C:Asset->Create Terrain

D:Windows->Create Terrain 80.以下哪种操作步骤可以在场景中添加“Wind Zone”?B

A:Terrain -> Wind Zone

B:GameObject -> Create Other -> Wind Zone

C:Component -> Physics -> Wind Zone

D:Assets -> Create -> Wind Zone

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

A:Edit -> Rendering Setting -> Directional Light

B:GameObject -> Create Other -> Directional Light

C:Component -> Rendering -> Directional Light

D:Assets -> Directional Light

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

A:Skybox

B:Solid Color

C:Depth Only

D:Background

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

A:JavaScript

B:C#

C:Boo

D:Perl

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

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

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

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

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

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

A:Windows -> Asset Store

B:Edit -> Asset Store

C:File -> Asset Store

D:Assets -> Asset Store86.在哪个面板中可以修改物体的空间属性,如位置、朝向、大小等?B

A:Project

B:Inspector

C:Hierarchy

D:Toolbar

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

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

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

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

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

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

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

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

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

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

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

A:File --> Lightmapping

B:Assets --> Lightmapping

C:Windows --> Lightmapping

D:Component --> Lightmapping

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

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

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

C:可以增加场景真实感

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

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

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

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

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

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

A:Camera

B:Light

C:Render Settings

D:Project Settings->Quality

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

A:PVS only

B:PVS and dynamic objects

C:Automatic Portal Generation

D:Dynamic Only

94.关于 Vector3 的 API,以下说法正确的是? C

A:Vector3.normalize 可以获取一个三维向量的法线向量;

B:Vector3.magnitude 可以获取一个三维向量的长度;

C:Vector3.forward 与 Vector3(0,0,1)是一样的意思;

D:Vector3.Dot(向量 A,向量 B)是用来计算向量 A 与向量 B 的叉积

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

A:Default

B:Walkable

C:Not Walkable

D:Jump

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

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

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

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

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

97.以下哪一个选项不属于 Unity 引擎所支持的视频格式文件 D

A.后缀名为 mov 的文件

B.后缀名为 mpg 的文件

C.后缀名为 avi 的文件

D. 后缀名为 swf 的文件

98.Unity 引擎使用的是左手坐标系还是右手坐标系? A

A.左手坐标系

B.右手坐标系

C.可以通过 Project Setting 切换左右手坐标系

D.可以通过 Reference 切换左右手坐标系

99.以下哪组摄像机中 Normalized View Port Rect 的数值设置可以使得摄像 机显示的画面位于 1280*720 分辨率的屏幕画面的右上角 D

A. x = 640, Y = -360 , W = 360,H = 360

B. x =640, Y = -360 , W = 360,H = 360

C. x =0.5, Y = 0 , W = 0.5,H = 0.5

D0. x =0.5, Y = 0.5 , W = 0.5,H = 0.5

100. 以下哪个组件是任何 GameObject 必备的组件 B

A.Mesh Renderer

B.Trtansform

C.Game Object

D.Main camera

101. 在 Unity 编辑器中,停止对 Game 视图进行预览播放的快捷键操作是 以下哪一项 A

A.CTRL/CMD + P

B.CTRL/CMD + Shift +P

C.CTRL/CMD + Alt +P

D.CTRL/CMD + S

102. 在 Unity 引擎中,Depth 属性值最大的摄像机会比 Depth 属性值小的 摄像机更晚绘制么? A

A.是

B.否

103. 下列选项中有关 Animator 的说法错误的是 D

A.Animasstor 是 Unity 引擎内置组件

B.任何一个具有动画状态机功能的 GameObject 都需要一个 Animator 组件

C.它主要用于角色行为的设置,包括 StateMachines,混合 Blend trees 以及通过脚本控制的事件

D.Animator 同 Animation 组件的用法是相同的

104. 下列哪个视图主要用于显示和编辑所选游戏对象或资源的相关属性 C

A.Scene

B.Project

C.Inspector

D.Hierarchy

105. 简述 Prefab 的使用?Editor 下动态创建 Prefab 的方式 "u3d 里动态 创建对象,需要使用 prefab 而创建的时候 MonoBehaviour.Instantiate (GameObject orignal) 需要一个作为原型的对象。三种方式获得prefab 对象。

方式一:使用脚本的 public 字段直接在 Project 视图里找到做好的 prefab,将其拖拽到指定脚本的指定 public GameObject 字段。

方式二:Resource 类

1、在 Assets 目录下的任意位置创建一个名为 resources 的文件夹,将做好的 prefab 放到这个文件夹下, path 形式如下: Assets....\resources\prefabName.prefab

2、在代码里使用 Resource.Load 或 LoadAll 函数,获得原型对象。指定 prefab 时不需要指定扩展名 (.prefab),形式如下:GameObject prototype = Resource.Load(“prefabName”) as GameObject; 可有任 意数量的 resources 文件夹,怀疑是 Resource 类初始化的时候会搜集所有 resources 文件夹里的文件名。

方式三:加载到场景

一般我们制作 Perfab 的时候,都是在 Hierarchy 视图里创建 GameObject,然后再搭建 Prefab。事后根 据需要删除这个原始的 GameObject。因此我们可以保留这个 GameObject,然后在场景加载后 Find 这 个对象(代码方式),或者使用脚本 public 字段(编辑器方式)

106. NGUI 的自适应性是?如果此时屏幕比例变化,屏幕出现黑边怎么办? (注:改变 NGUI 和 UGUI 的 Fixed size with Screen 不可行)

NGUI 根目录的 UIRoot 组件自带了根据高度自适应分辨率的功能。

Scaling Style 属性可选择三种不同的缩放策略。

PixelPerfect 完美像素:直接显示设定好的像素。当屏幕高度低于 minimum Height 时按比例缩小,当屏 幕高度大于 maximum Height 时按比例扩大。

FixedSize 按比例缩放:在设定好 的基础上,直接按比例缩放。

FixedSizeOnMobiles 合体版,android 和 ios 为 FixedSize 方式,其它按照 PixelPerfect 方式。

目录
相关文章
|
9月前
|
存储 网络协议 安全
Unity最常见的面试题-02
unity最常见的面试题,总有一题是你急需的!
|
21天前
|
存储 缓存 开发工具
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
73 0
|
1月前
|
IDE 持续交付 vr&ar
Unity编辑器扩展
Unity编辑器扩展
|
1月前
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
|
1月前
|
存储 搜索推荐 C#
Unity编辑器扩展
Unity编辑器扩展
21 0
|
1月前
|
前端开发 图形学
【#Unity Shader#Amplify Shader Editor(ASE)_第一篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第一篇】
|
9月前
|
图形学
|
7月前
|
前端开发 C# 开发工具
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
122 0
|
9月前
|
人工智能 算法 图形学
Unity最常见的面试题-04
unity最常见的面试题,总有一题是你急需的!
|
9月前
|
存储 Java C#
Unity最常见的面试题-03
unity最常见的面试题,总有一题是你急需的!