搜档网
当前位置:搜档网 › 史上最全的Unity面试题

史上最全的Unity面试题

史上最全的Unity面试题
史上最全的Unity面试题

四十一:射线检测碰撞物的原理是

射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。

四十二:Unity中,照相机的Clipping Planes的作用是什么调整Near、Fare两个值时,应该注意什么

剪裁平面。从相机到开始渲染和停止渲染之间的距离。

四十三:如何让已经存在的GameObject在LoadLevel后不被卸载掉

void Awake()

{

DontDestroyOnLoad;

}

四十四:请简述GC(垃圾回收)产生的原因,并描述如何避免

GC回收堆上的内存

避免:1.减少new产生对象的次数

2.使用公用的对象(静态成员)

3.将String换为StringBuilder

四十五:反射的实现原理

审查元数据并收集关于它的类型信息的能力。实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤:

1. 导入using ;

2. (“程序集”)加载程序集,返回类型是一个Assembly

3. 得到程序集中所有类的名称

foreach (Type type in ())

{

string t = ;

}

4. Typ e type = (“程序集.类名”);获取当前类的类型

5. (type); 创建此类型实例

6. MethodInfo mInfo = (“方法名”);获取当前方法

7. 方法参数);

四十六:简述四元数的作用,四元数对欧拉角的优点

四元数用于表示旋转

相对欧拉角的优点:

1.能进行增量旋转

2.避免万向锁

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

四十七:移动相机动作在哪个函数里,为什么在这个函数里

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

四十八: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.代码中少产生临时变量

相关主题