- 6
- 0
- 约1.87千字
- 约 3页
- 2020-11-30 发布于山东
- 举报
四十一:射线检测碰撞物的原理是
射线是 3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生
碰撞时,它将停止发射 。
四十二:Unity 中,照相机的 Clipping Planes 的作用是什么调整 Near、
Fare 两个值时,应该注意什么
剪裁平面 。从相机到开始渲染和停止渲染之间的距离。
四十三:如何让已经存在的 GameObject在 LoadLevel 后不被卸载掉
void Awake()
{
DontDestroyOnLoad;
}
四十四:请简述 GC(垃圾回收)产生的原因,并描述如何避免
GC回收堆上的内存
避免: 1. 减少 new 产生对象的次数
使用公用的对象(静态成员)
将 String 换为 StringBuilder
四十五:反射的实现原理
审查元数据并收集关于它的类型信息的能力。 实现原理: 在运行时根据程序集及其中的类型
得到元数据。下面是实现步骤:
导入 using ;
( “程序集” ) 加载程序集 , 返回类型是一个 Assembly
得到程序集中所有类的名称
foreach (Type type in ())
{
string t = ;
}
Typ e type = ( “程序集 . 类名” ); 获取当前类的类型
(type);创建此类型实例
MethodInfo mInfo = (“方法名” ); 获取当前方法
方法参数 );
四十六:简述四元数的作用,四元数对欧拉角的优点
四元数用于表示旋转
相对欧拉角的优点:
能进行增量旋转
避免万向锁
给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
四十七:移动相机动作在哪个函数里,为什么在这个函数里
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图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。
四十九:什么是渲染管道
是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤, 都要
将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:
本地坐标 - 视图坐标 - 背面裁剪 - 光照 - 裁剪 - 投影 - 视图变换 - 光栅化
五十:如何优化内存
有很多种方式,例如
压缩自带类库;
2. 将暂时不用的以后还需要使用的物体隐藏起来而不是直接 Destroy 掉;
释放 AssetBundle 占用的资源;
降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
使用光照贴图,使用多层次细节(LOD),使用着色器 (Shader) ,使用预设 (Prefab) 。
代码中少产生临时变量
原创力文档

文档评论(0)