面试题(3)

2019-08-30 19:43

4. Type type = assembly.GetType(“程序集.类名”);获取当前类的类型 5. Activator.CreateInstance(type); 创建此类型实例

6. MethodInfo mInfo = type.GetMethod(“方法名”);获取当前方法 7. m.Info.Invoke(null,方法参数);

简述四元数的作用,四元数对欧拉角的优点? 四元数用于表示旋转 相对欧拉角的优点: 1.能进行增量旋转 2.避免万向锁

3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)

GPU的工作原理

简而言之,GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序) 顶点处理:这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Vertex Shader(定点着色器)完成。 光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。 纹理帖图:顶点单元生成的多边形只构成了3D物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴上相应的图片,从而生成“真实”的图形。TMU(Texture mapping unit)即是用来完成此项工作。 像素处理:这阶段(在对每个像素进行光栅化处理期间)GPU完成对像素的计算和处理,从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Pixel Shader(像素着色器)完成。 最终输出:由ROP(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。

总结:GPU的工作通俗的来说就是完成3D图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。

什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有: 本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化

如何优化内存? 有很多种方式,例如 1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉; 3.释放AssetBundle占用的资源;

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

5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。 6.代码中少产生临时变量

动态加载资源的方式?他们之间的区别

1.Resources.Load(); 2.AssetBundle

Vertex Shader是什么,怎么计算?

顶点着色器是一段执行在GPU上的程序,用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。

Vertex Shader对输入顶点完成了从local space到homogeneous space(齐次空间)的变换过程,homogeneous space即projection space的下一个space。在这其间共有world transformation, view transformation和projection transformation及lighting几个过程。

下列代码在运行中会产生几个临时对象? string a = new string(\

a = (a.ToUpper() + \ 在C#中第一行是会报错的(Java中倒是可行)。 应该这样初始化:

string b = new string(new char[]{'a','b','c'}); 答案为:5个临时对象

下列代码在运行中会发生什么问题?如何避免? List ls = new List(new int[] { 1, 2, 3, 4, 5 }); foreach (int item in ls) {

Console.WriteLine(item * item); ls.Remove(item); }

产生运行时错误,在 ls.Remove(item)这行,因为foreach是只读的。不能一边遍历一边修改。

Unity3D是否支持写成多线程程序?如果支持的话需要注意什么? 仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用

支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。

注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象

Unity3D的协程和C#线程之间的区别是什么?

多线程程序同时运行多个线程 ,而在任一指定时刻只有一个协程在运行,并且这个正在运行的协同程序只在必要时才被挂起。除主线程之外的线程无法访问Unity3D的对象、组件、方法。

Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。 StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。 六十一:矩阵相乘的意义及注意点

用于表示线性变换:旋转、缩放、投影、平移、仿射 注意矩阵的蠕变:误差的积累

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

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

使用动态字体时,Unity将不会预先生成一个与所有字体的字符纹理。当需要支持亚洲语言或者较大的字体的时候,若使用正常纹理,则字体的纹理将非常大。

当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免? 穿透(碰撞检测失败)

(1)增大细小物体的碰撞体 (2)使用射线检测,检测距离

(3)FixedUpdate频率修改,可以physics time减小,不建议这样做

(4)改变物体的速度,确保rigidbody不超过一定的速度,来达到减速目的,这个也不实用 (5)将检测方式改为连续检测,rigifdbody.collisionDetectionMode = CollisionDetectionMode.Continuous; 或者动态连续检测( CollisionDetectionMode.ContinuousDynamic)

(6)代码限制,加大计算量提前计算好下一个位置。

UNITY3d在移动设备上的一些优化资源的方法

1.使用assetbundle,实现资源分离和共享,将内存控制到200m之内,同时也可以实现资源的在线更新

2.顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到8万以下,fps稳定到了30帧左右

3.只使用一盏动态光,不是用阴影,不使用光照探头 粒子系统是cpu上的大头 4.剪裁粒子系统

5.合并同时出现的粒子系统 6.自己实现轻量级的粒子系统

animator也是一个效率奇差的地方

7.把不需要跟骨骼动画和动作过渡的地方全部使用animation,控制骨骼数量在30根以下 8.animator出视野不更新 9.删除无意义的animator

10.animator的初始化很耗时(粒子上能不能尽量不用animator) 11.除主角外都不要跟骨骼运动apply root motion

12.绝对禁止掉那些不带刚体带包围盒的物体(static collider )运动

NUGI的代码效率很差,基本上runtime的时候对cpu的贡献和render不相上下 13每帧递归的计算finalalpha改为只有初始化和变动时计算 14去掉法线计算

15不要每帧计算viewsize 和windowsize 16filldrawcall时构建顶点缓存使用array.copy

17.代码剪裁:使用strip level ,使用.net2.0 subset 18.尽量减少smooth group

19.给美术定一个严格的经过科学验证的美术标准,并在U3D里面配以相应的检查工具

将Camera组件的ClearFlags选项选成Depth only是什么意思?有何用处?

如果把摄像机的ClearFlags勾选为Deapth Only,那么摄像机就会只渲染看得见的对象,把背

景会完全透明,这种情况一般用在两个摄像机以上的场景中

在编辑场景时将GameObject设置为Static有何作用?

设置游戏对象为Static时,这些部分被静态物体挡住而不可见时,将会剔除(或禁用)网格对象。因此,在你的场景中的所有不会动的物体都应该标记为Static。

有A和B两组物体,有什么办法能够保证A组物体永远比B组物体先渲染?

把A组物体的渲染对列大于B物体的渲染队列,通过shader里面的渲染队列来渲染

将图片的TextureType选项分别选为““Texture”和“Sprite”有什么区别

Sprite作为UI精灵使用,Texture作用模型贴图使用。Sprite需要2的整次幂,打包图片省资源

问一个Terrain,分别贴3张,4张,5张地表贴图,渲染速度有什么区别?为什么? 没有区别,因为不管几张贴图只渲染一次。

什么是DrawCall?DrawCall高了又什么影响?如何降低DrawCall?

Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法: 1. Dynamic Batching 2. Static Batching

3. 高级特性Shader降级为统一的低级特性的Shader。

实时点光源的优缺点是什么?

可以有cookies – 带有 alpha通道的立方图(Cubemap )纹理。点光源是最耗费资源的。

Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha这句话是什么意思? 作用就是Alpha混合。公式:最终颜色 = 源颜色 x 源透明值 + 目标颜色 x(1 - 源透明值)

简述水面倒影的渲染原理

原理就是对水面的贴图纹理进行扰动,以产生波光玲玲的效果。用shader可以通过GPU在像素级别作扰动,效果细腻,需要的顶点少,速度快

简述NGUI中Grid和Table的作用?

对Grid和Table下的子物体进行排序和定位

请简述NGUI中Panel和Anchor的作用 1. 只要提供一个half-pixel偏移量,它可以让一个控件的位置在Windows系统上精确的显示出来(只有这个Anchor的子控件会受到影响)

2. 如果挂载到一个对象上,那么他可以将这个对象依附到屏幕的角落或者边缘

3.UIPanel用来收集和管理它下面所有widget的组件。通过widget的geometry创建实际的draw call。没有panel所有东西都不能够被渲染出来,你可以把UIPanel当做Renderer

能用foreach遍历访问的对象需要实现_接口或声明____方法的类型 IEnumerable;GetEnumerator

1.以下哪一个选项不属于Unity引擎所支持的视频格式文件(D) A.后缀为mov的文件 B.后缀为mpg的文件 C.后缀为avi的文件 D.后缀为swf的文件

Unity引擎使用的是左手坐标系还是右手坐标系(A) A.左手坐标系 B.右手坐标系

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

什么是导航网格(NavMesh)(B)

A.一种用于描述相机轨迹的网格 B.一种用于实现自动寻址的网格 C.一种被优化过的物体网格 D.一种用于物理碰撞的网格

下列选项中有关Animator的说法错误的是?(D) A.Animator是Unity引擎中内置的组件

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

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

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

Application.loadLevel命令为(A)

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

下列选项中,关于Transform组件的Scale参数描述正确的是(A) A.Transform组件的Scale参数不会影响ParticleSystem产生粒子的大小 B.Transform组件的Scale参数不会影响GUITexture的大小

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

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

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

A.Mouse Look B.FPS Input Controller C.Audio Listener D.Character Motor

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

A.Audio Listener B.Audio Clip C.Audio Source D.Audio Reverb Zone

下列叙述中有关 Prefab 说法错误的是哪一项(B)

A.Prefab 是一种资源类型 B.Prefab 是一种可以反复使用的游戏对象 C.Prefab 可以多次在场景进行实例 D.当一个 Prefab 添加到场景中时,也就是创建了它的一个实例


面试题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:web期末复习要点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: