U3D 笔试、面试题目经历记录

主要记录的是印象比较深的、没怎么答上来的内容

C#部分:

1、多态、继承、封装的概念

  1. 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。 简单的说:就是用基类的引用指向子类的对象。 为什么要用多态呢?

  2. 继承:继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance) 可以理解为一个类从另一个类获取成员变量和成员函数的过程。 例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。

  3. 封装:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将 数据 与操作数据的 源代码 进行有机的结合,形成"类",其中数据和函数都是类的成员。

Unity部分

1、LOD的概念和工作方式?

LOD指的是网格的细节级别,细节级别 (LOD) 是一种减少 Unity 渲染远距离网格所需的 GPU 操作数量的技术。

当场景中的某个游戏对象距离摄像机很远时,与距离摄像机很近的游戏对象相比,可以看到的细节将会减少。但默认情况下,Unity 会使用相同数量的三角形来渲染两个远近不同距离的游戏对象。这可能会浪费 GPU 运算资源,从而影响场景中的性能。

LOD 技术允许 Unity 根据与摄像机的距离来相应减少为游戏对象渲染的三角形数量。要使用此技术,游戏对象必须具有大量网格,这些网格的几何体的细节级别逐渐降低。这些网格称为 LOD 级别。游戏对象离摄像机越远,Unity 渲染的 LOD 细节级别越低。此技术减轻了这些远处游戏对象给硬件带来的负担,因此可以提高渲染性能。

2、什么是Unity协程?和C#线程相比较有什么区别?

简单的说,协程就是一种特殊的函数,它可以主动的请求暂停自身并提交一个唤醒条件,Unity会在唤醒条件满足的时候去重新唤醒协程。

与线程的区别:

  • 对于协程而言,同一时间只能执行一个协程,而线程则是并发的,可以同时有多个线程在运行
  • 两者在内存的使用上是相同的,共享堆,不共享栈
  • 微观上线程是并行(对于多核CPU)的,而协程是串行的

3、什么是Mip map?其优缺点是什么?

Mipmap技术有点类似于LOD技术,相当于贴图的LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源

缺点:十分占用内存,因为mipmap会根据摄像机远近不同而生成对应的八个贴图。

优点:可以优化显存带宽,用来减少渲染花费,因为可以根据实际情况,会选择适合的贴图来渲染,距离摄像机越远,显示的贴图像素越低,反之,像素越高!

posted @ 2022-03-19 23:52  不正游侠  阅读(92)  评论(0编辑  收藏  举报