Unity随机随学

1.什么是渲染管道?

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

主要步骤有:

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

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

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

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

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

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

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

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

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

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

三个阶段:

(1)OnCollisionEnter 进入碰撞

(2)OnCollisionStay 逗留碰撞

(3)OnCollisionExit  退出碰撞

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

四种:

(1)平行光:Directional Light

(2)点光源:Point Light

(3)聚光源:Spoint Light

(4)区域光源:Area Light

6.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法?

Awake->start->Update->FixedUpdate->LateUpdate->OnGUI->Reset->OnDisable->OnDestroy

7.CharacterController和Rigidbody的区别?

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

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

FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。

FixedUpdate比较适用于物体引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

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

LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调用,比较适合用于命令脚本的执行。

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

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

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

(1)可以把assets目录和Library目录一起迁移。

(2)导出包。

(3)用Unity带的assets Server功能。

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

获取:GetComponent

增加:AddComponent

删除:Destroy

13.alpha blend工作原理

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

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

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

15.MipMap是什么,作用?

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

16.Application.LoadLevel命令为:加载关卡。

17.调用记录到控制台的命令是什么?

Debug.Log();

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

主要有关节动画、骨骼动画、单一网络模型动画(关键帧动画)

关节动画:把角色分成若干独立部分,一部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画。

骨骼动画:广泛应用的动画方式,集成了以上两个方式的优缺点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;

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

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

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

20.动态加载资源的方式?

(1)Resources.Load():通过Resources模块,调用它的load函数:可以直接load并反回某个类型的Object,前提是要把这个资源放在Resource命名的文件按下,Unity不关有没有场景引用,都会将其全部打入到安装包中。

(2)AssetBundle:通过bundle的形式:即将资源打成assetbundle放在服务器或本地磁盘,然后使用WWW模块get下来,然后从这个bundle中load某个object。

(3)AssetDatabase.loadasset:通过AssetDatabase.loadasset这个方式只在editor访范围内有效,游戏运行时没有这个函数,它通常再开发中调试用的。

注:区别

(I)Resources的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以unity推荐不使用它,都用bundle的方式替代,把资源打成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是再开发过程中,不可能每更新壹个资源就打一次bundle,所以editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。

21.使用原生GUI创建一个可以拖动的窗口命令是什么?

GUI.DragWindow();

22.简述四元数的作用,四元数对欧拉角的优点?

四元数用于表示旋转。

相对欧拉角的优点:

(1)能进行增量旋转

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

A.后缀名为mov的文件

B.后缀名为mpg的文件

C.后缀名为avi的文件

D.后缀名为swf的文件

24.HDR高动态光照渲染属于下列哪个选项的属性?D

A.Lightmapping视图

B.Light Probe组件

C.Occlusion Culling视图

D.Camera组件

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

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

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

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

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

26.当一个物体在视野内被其它物体遮挡,不希望对该物体进行渲染,可以通过以下哪一个模块实现该功能?A

A.Occlusion Culling

B.NavMesh

C.Light Probes

D.Culling Mask

27.制作Skybox时,为了避免出现纹理拼接时产生的接缝,这些纹理的循环方式应该设置为以下哪一项?B

A.Repeat

B.Clamp

C.Trilinear

D.Bilinear

27.下列哪个菜单可以用于打开设置发布程序选项的面板 ?C

A.General Settings->Layers->Collision

B.Edit->Render Settings

C.Edit->Project Settings->Player

D.Edit->Preferces

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

A.左手坐标系

B.右手坐标系

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

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

29.对摄像机Rendering Path的设置中,以下哪一项可以使Spot Light对物体光照产生的阴影以实时的方式渲染? C

A.Vertex Lit

B.Forward

C.Deferred Lighting

D.以上都可以

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

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

B.X=640,Y=0,W=640,H=360

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

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

31.以下哪个组件是任何Game Object必备的组件? B

A.Mesh Renderer

B.Transform

C.Game Object

D.Main Camera

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

A.CTRL/CMD+P

B.CTRL/CMD+SHIFT+P

C.CTRL/CMD+Alt+S

D.CTRL/CMD+S

33.在对2D纹理的设置中,什么用途的纹理通常可以不强制使用2次幂的高宽数值?B

A.用于制作天空盒的纹理

B.用于UI元素的纹理

C.用于三维模型贴图的纹理

D.用于Cookie贴图的纹理

34.在Unity引擎中,Collider所指的是什么?D

A.Collider是Unity引擎中所支持的一种资源,可用作储存网格信息

B.Collider是Unity引擎中内置的一种组件,可用对网格进行渲染

C.Collider是Unity引擎中所支持的一种资源,可用作游戏对象的坐标装换

D.Collider是Unity引擎中内置的一种组件,可用作游戏对象间的碰撞检测

35.可以通过以下哪个视图来录制场景中GameObject的动画? B

A.Mecanim

B.Animation

C.Animator

D.Navigation

36.在Unity工程的一个场景中,需控制多个摄像机的渲染画面的前后层次,可以通过Camera组件中哪个选项来进行设置?B

A.Field of View

B.Depth

C.Clear Flags

D.Rendering Path

37.如果想让一个Game Object在收到Directional Light的照射下对场景中的其它Game Object产生阴影,应该开启该Game Object上的哪种组件的哪种属性?B

A.Camera组件上的“Receive Shadows”属性

B.Mesh Render组件上的“Cast Shadows”属性

C.Collider上的“is Trigger”属性

D.Camera组件上的“Culling Mask”属性

38.如何在Unity引擎中为场景创建一个Shuriken粒子系统? A

A.依次点击菜单栏:Game Object->Create Other->Particle System

B.在Project窗口,依次点击Create->Particle System,创建后拖入场景中

C.在Hierarchy视图中空白出右键,在右键菜单中依次选择:Create->Particle System

D.以上都可以

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

A.Animator是Unity引擎中内置的组件

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

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

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

40.在Unity引擎中,关于如何向工程中导入图片资源,一下做法错误的是?D

A.将图片文件复制或剪切到项目文件夹下的Assets文件夹或Assets子文件夹下

B.通过Assets->Import New Asset……导入资源

C.选中所需图片,按住鼠标左键拖入Project视图中

D.选中所需图片,按住鼠标左键拖入Scene视图中

41.Unity引擎中,可通过下列哪个步骤创建Animator Controller? D

A.Game Object->Animator Controller

B.Component->Animator Controller

C.在Hierarchy视图中点击Create->Animator Controller

D.在Project 视图中点击Create->Animator Controller

42.下列选线中,关于Transform组件的Scale参数的描述正确?A

A.Transform组件的Scale参数不会影响ParticleSystem产生粒子的大小

B.Transform组件的Scale参数不会影响GUITexture的大小

C.添加Collider组件后的GameObject,其Collider组件的尺寸不受Transform组件的Scale参数影响

D.添加Rigidbody组件后的物体,大小将不再受Transform组件中Scale参数的影响

43.Mecanim动画系统非常适合用于人形角色动画的制作。当导入一个FBX的人形模型后,如需要对该模型做人形动画骨骼重定向的话,则需要将动画类型设置为以下哪一项?A

A.Humanonid

B.Generic

C.Legacy

D.Auto

44.在Unity中的场景中创建Camera时,默认情况下除了带有Transform、Camera、GUILayer、Flare Layer组件之外,还带有以下哪种组件? C

A.Mouse Look

B.FPS Input Controller

C.Audio Listener

D.Character Motor

45.如果将一个声音剪辑文件从Project视图拖动到Inspector视图或者Scene视图中的游戏对象上,该游戏对象会自动添加以下哪种组件?C

A.Audio Listener

B.Audio Clip

C.Audio Source

D.Audio Reverb Zone

46.在Unity工程的Project视图中选中一张图片,此时在Inspector视图中Preview窗口中显示的图片的大小表示的是以下哪一项?B

A.图片实际占用外存的大小

B.当工程运行时,该图片在场景中所占用显存的大小

C.对图片的格式,压缩后所占用的外存的大小

D.以上均不正确

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

A.Scene

B.Project

C.Inspector

D.Hierarchy

48.在场景中需要使一个带有网格的Game Object接受来自Light Probes的环境光照,需要对系列选项中哪个组件的Use Light Probes属性进行设置?C

A.Mesh Filter

B.Mesh Collider

C.Mesh Renderer

D.Material

49.下列叙述中有关Prefab说法错误的是哪一项?

A.Prefab是一种资源类型

B.Prefab是一种可以反复使用的游戏对象

C.Prefab可以多次在场景进行实例

D.当一个Prefab添加到场景中时,也就是创建了它的一个实例

50.以下哪一类型的纹理能够在渲染时为三维模型的表面增加凹凸细节?A

A.Normal map

B.Cube map

C.Light map

D.Specular map

51.若要给Sphere游戏对象添加Physical Material,需要使用下列选项中的哪个组件的Material属性?C

A.Mesh Renderer

B.Mesh Filter

C.Sphere Collider

D.Rigidbody

52.以下关于WWW.LoadFromCacheOrDownload描述正确的是:C

A.可被用于将Text Assets自动缓存到本地磁盘

B.可被用于将Rescources自动缓存到本地磁盘

C.可被用于将Asset Bundles自动缓存到本地磁盘

D.可被用于将任意格式的Unity资源文件自动缓存到本地磁盘

53.为了正确使用Unity提供的Light mapping功能,以下哪一项措施是不必要的?B

A.将所有参与烘焙的物体设置为Light map Static

B.将场景中的所有相机设置为Light mapping Enable

C.确保所有参与烘焙物体的Light map UVs[0,1]之间

D.确保所有参与烘焙灯光的Light mapping Mode为“Baked Only”或“Auto”

54.以下哪种方法不能提高在Unity中烘焙Light maps的质量?D

A.增加Resolution值

B.增加Bounces值

C.增加Final Gather Rays值

D.增加Contrast Threshold值

55.Mecanim动画系统支持导入的Animation类型不包括:B

A.Humanoid

B.Auto

C.Generic

D.Legacy

56.以下哪种不属于Unity所定义的Rendering Path?C

A.Forward Rendering

B.Vertex Lit

C.Pixel Lit

D.Deferred Lighting 

57.以下哪种图像处理后处理方法可以达到如下的处理效果?D

A.DepthOfField

B.ColorCorrectionCurves

C.Contrast Enhance

D.SunShafts

58.关于MonoBehavior.LateUpdate函数描述错误的是:B

A.当MonoBehavior类被启用后,每帧调用一次

B.常被用于处理Rigidbody的更新

C.在所有Update函数执行后才能被调用

D.常被用于实现跟随相机效果,且目标物体的位置已经在Update函数中被更新

59.遮挡剔除(Occlusion Culling)与视锥体剔除(Frustum Culling)是否可以同时起作用?A

A.是

B.否

60.下列哪个变量不是ShaderLab中内置的?C

A.UNITY_MATRIX_IT_MV

B.UNITY_MATRIX_VP

C.UNITY_MATRIX_I_MV

D.UNITY_MATRIX_T_MV

61.某个GameObject有一个名为MyScript的脚本,该脚本中有一个名为DoSomething的函数,则如何在该GameObject的另一个脚本中调用该函数?A

A.GetComponent<MyScript>().DoSomething()

B.GetComponent<Script>("MyScript").DoSomething()

C.GetComponent<MyScript>().Call("DoSomething")

D.GetComponent<Script>("MyScript").Call("DoSomething")

62.在Unity的原生2D系统中,下列哪个组件允许一个sprite对象在Rigidbody的控制下围绕着空间中某一个点进行旋转?D

A.Slider Joint2D

B.Spring Joint2D

C.Distance Joint2D

D.Hinge Joint2D

63.下列哪一对Cube是可能被Unity引擎进行动态批处理(dynamic batching)的?A

A.两个材质相同,缩放不同的Cube

B.两个材质不同的Cube

C.两个受Light map影响,且LightmapIndex不同的Cube

D.两个用了同一个复杂Shader(多个Pass)的Cube

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

A.是

B.否

65.什么是导航网络(NavMesh)?B

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

B.一种用于实现自动寻址的网格

C.一种被优化过的物体网格

D.一种用于物理碰撞的网格

66.在Dual Lightmaps模式下使用Light Probes时,Light Probes上存储的光照信息包括:D

A.来自于BakedOnly光源的全部光照信息

B.天空光、自发光材质、面光源等

C.来自于Auto光源的间接反射光信息

D.其它全部三项

67.Unity对SubShader的选择不受以下哪个因素的影响?D

A.SubShader的放置顺序

B.硬件是否支持

C.Shader LOD设置

D.其他三项都会受影响

68.以下哪个描述不属于Surface Shader的特点?A

A.主要被用于实现一些图片后处理特效

B.Unity会自动为其生成部分外围代码

C.大多数情况下可以兼容Forward/Deferred渲染模式

D.可以实现自定义的光照模型

69.下列哪个函数不属于碰撞事件?C

A.OnCollisionEnter

B.OnCollisionExit

C.OnCollisionUpdate

D.OnCollisionStay

70.启动Mip Maps对内存的影响是?A

A.增加约33%的内存

B.减少约33%的内存

C.增加约25%的内存

D.减少约25%的内存

71.采用Input.mousePosition来获取鼠标在屏幕上的位置,以下表述正确的是:C

A.左上角为原点(0,0),右下角为(Screen.Width,Screen.Height)

B.左下角为原点(0,0),右上角为(Screen.Width,Screen.Width)

C.左下角为原点(0,0),右上角为(Screen.Width,Screen.Height)

D.左上角为原点(0,0),右下角为(Screen.Height,Screen.Width)

72.以下关于MonoBehavior.OnGUI()的描述错误的是:D

A.如果MonoBehavior没有被启用,则OnGUI函数不会被调用

B.用于绘制和处理GUI events

C.每帧可能会被绘制多次,每次对应于一个GUI event

D.每帧被调用一次

73.以下哪一项可以设置Rendering Path?A

A.Camera

B.Render Setting

C.Project Setting 

D.Light

74.在任何情况下,Light Cokkie本质上就是;一张带有Alpha信息的2D纹理。这种说法对么?B

A.对

B.不对

75.如何通过脚本来删除其自身对应的GameObject?A

A.Destroy(gameObject);

B.this.Destroy()

C.Destroy(this)

D.其他三项都可以

76.在Mecanim动画系统中,Animation Parameter不支持以下哪种数据类型?A

A.Vector

B.Bool

C.Float

D.Int

77.在哪种Rendering Path下,灯光数量对性能的影响最显著?B

A.Vertex Lit

B.Forward Rendering

C.Deferred Lighting

D.其余三项都很接近。

78.一般而言,以下哪种Shader最简单、性能最好?C

A.Diffuse

B.Specular

C.VetexLit

D.Normal mapped

79.下图是一个简单的Mecanim Blend Tree,图中右侧三个节点所代表的是?A

A.Animation Clip

B.Blend Tree子节点

C.Animation状态机中的State

D.Animator中的Layer

80.以下哪个Utility类可以在运行时使用?C

A.MeshUtility

B.PrefabUtility

C.StaticBatchingUtility

D.ArrayUtility

81.在启用Particle System的碰撞时,选择Plane类型的效率会比world类型更高么?A

A.对

B.错

82.OpenURL学习

(1).static function OpenURL(url :string):void

(2).在浏览器中打开url

(3).在浏览器或者独立播放器模式下,这将在缺省的浏览器中使用新页打开url。这将使浏览器位于前端。

(4).但在网页中执行时,包含插件的页将被重定向到url

(5).function Start()

{

  Application.OpenURL("http://game.ceeger.com/");

}

83.UILabel的学习用法总结

(1)设置显示文字 lab.text="awardTypeerror";

(2)设置文字字体:粗体,正常的是SystemFontOfSize lab.font=[UIFont boldSystemFontOfSize:20];

(3)设置文字颜色 lab.textColor=[UIColor orangeColor];

(4)设置文字位置 lab.textAlignment=UITextAlignmentRight; lab.textAlignment=UITextAlignmentCenter;

(5)设置文字大小适应label宽度 lab.adjustsFontSizeToFitWidth=YES;

(6)设置Label的行数 lab.unmberOfLines=2;

(7)去掉背景颜色(怀疑) lab.backgroundColor=[UIColor clearColor];

(8)设置高亮 lab.highlighted="YES"; lab.highlightedTextColor=[UIColor orangeColor];

(9)设置阴影 lab.shadowColor=[UIColor redColor]; lab.shadowOffset=CGSizeMake(1.0,1.0);

(10)设置是否能与用户进行交互 lab.userInteractionEnabled=YES;

(11)设置label中的文字是否可变,默认值是YES lab.enabled=NO;

(12)设置文字过长时的显示格式

lab.lineBreakMode=UILineBreakModeMiddleTruncation;//截取中间 其他的集中格式形式

typedf enum{

        UILineBreakModeWordWrap=0,

      UILineBreakModeCharacterWrap,

        UILineBreakModeClip,//截取多余的部分

       UILineBreakModeHeadTruncation,//截取头部

       UILineBreakModeTailTruncation;//截取尾部

       UILineBreakModeMiddleTruncation;截取中间

      }UILineBreakMode;

(13)如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本的基线的行为

lab.baselineAdjustment=UIBaselineAdjustmentNone;

还有其他集中形式。

typeof enum{

UIBaselineAdjustmentAlignBaselines,

UIBaselineAdjustmentAlignCenters,

UIBaselineAdjustmentNone,

} UIBaselineAdjustment;

84.如何优化内存

(1)压缩自带类库

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

(3)释放AssetBundle占用的资源

(4)降低模型的片面数,降低模型的骨胳数量,降低贴图的大小

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

85.什么是协同程序

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

86.你使用过那些插件

(1)界面制作:NGUI

(2)2D游戏制作:2D Toolkit/工具包,工具箱

(3)可视化编程:PlayMaker

(4)差值插件:iTween,HOTween

(5)路径搜寻:Simple Path

(6)美术及动画制作:RageSpline,Smooth Moves

(7)画面增强:Bitmap2Material,Strumpy Shader Editor

(8)摄像机管理:Security Camera

(9)资源包:Nature Pack

(10)造路插件:EasyRoads3D

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

(1)使用本身的GUI

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

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

88.CharacterController和Rigidbody的区别?

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

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

原文地址:https://www.cnblogs.com/heisaijuzhen/p/4578410.html