MIL21——模拟面试题
MIL21——模拟面试题
C#
-
为什么要为缓存池中的单个池子设置对象上限?
-
任务系统中,某任务是要采集某一种植物
n株后才能完成。说一说制作思路 -
有两个泛型类,他们是父子关系
1
2public class Father<T> {}
public class Son<T> : Father<T>这个写法是否正确?
1
2
3
4public Father<Father<int>> Test()
{
return new Son<Son<int>>();
} -
数据结构中的树,一般会在游戏开发中用来处理什么?至少说出3点
-
游戏开发中逻辑与表现如何分离?非 UI 系统
Unity
- 什么是纹理映射?
- IK(逆运动学)可以帮助我们完成什么功能?
- Unity 中为 Sprite 前后关系排序的常用方式有哪些?(至少说出3种)
- 请介绍一些在 Unity 中减少内存的方法。(至少说出3种方法)
- 请介绍一些在 Unity 中提升性能的方法(至少说出5种方法)
答案
C#
-
为什么要为缓存池中的单个池子设置对象上限?
有助于内存管理,避免对象无限扩张,防止资源浪费
-
任务系统中,某任务是要采集某一种植物
n株后才能完成。说一说制作思路-
接受任务时,根据策划需求决定是否判断身上已有的物品
- 如果需要,则遍历有用物品是否有满足条件的物品,并统计数量
- 如果不需要,则从 0 开始计数
-
执行任务时,在采集物品结束或获取物品时利用事件中心分发事件
任务管理器监听事件,当获得满足条件物品时数量累加 -
判断任务是否可以交付,当物品数量达到目标时,任务状态变为可以交付
-
-
有两个泛型类,他们是父子关系
1
2public class Father<T> {}
public class Son<T> : Father<T>这个写法是否正确?
1
2
3
4public Father<Father<int>> Test()
{
return new Son<Son<int>>();
}不正确,会报错 因为
Son<Son<int>> 并不是Father<Father<int>> 的子类型
如果要修改,我们可以返回return new Son<Father<int>>();
关键点,泛型类的T 是类型的一部分,T并不存在里式替换的关系 -
数据结构中的树,一般会在游戏开发中用来处理什么?至少说出3点
- 游戏对象的父子关系
- 游戏 AI 中的行为树
- 技能系统中的技能树、天赋树
- 物理引擎中会使用空间分割树来提升碰撞检测性能
等等
-
游戏开发中逻辑与表现如何分离?非 UI 系统
以 Unity 游戏开发为例 我们可以将游戏中的对象大致分成两类
- 逻辑类:只关心逻辑处理,可以不用继承
Mono,管理逻辑相关的内容
比如移动、旋转、缩放、伤害检测等等 - 表现类:只关心美术表现,实际持有
GameObject,管理表现相关的内容
比如动画播放、特效播放、音效播放等等
- 逻辑类:只关心逻辑处理,可以不用继承
Unity
-
什么是纹理映射?
是一种图形学技术,用于将纹理图像映射到三维模型的表面上,以模拟表面的外观和细节
-
IK(逆运动学)可以帮助我们完成什么功能?
- 利用 IK 控制四肢,可以完成类似抓取、推动、拖拽相关功能
- 利用 IK 控制头部,可以完成瞄准,头部跟随等相关功能
-
Unity 中为 Sprite 前后关系排序的常用方式有哪些?(至少说出3种)
- Sprite Renderer 上的 Sorting Layer 按层排序
- Sprite Renderer 上的 Order in Layer(同层时)
- 坐标轴(一般为 Z 轴)排序
- Sorting Group 排序组组件排序
- 自定义材质球使用的 Shader 去控制
-
请介绍一些在 Unity 中减少内存的方法(至少说出3种方法)
-
资源相关:
- 压缩纹理
- 减小纹理图片大小
- 降低模型质量(减少顶点)
- 使用压缩格式的音效,比如AAC、ADPCM等
-
代码相关:
- 缓存池
- 减少静态成员
- 少
new -
string 和StringBuilder - 避免内存泄漏
等等
-
-
请介绍一些在 Unity 中提升性能的方法(至少说出 5 种方法)
-
渲染相关:
主要方向减少DrawCall,减少着色器计算量
- 批处理
- GPU Instancing
- 合并图集
- 减少模型顶点数
- LOD
- MipMaps
- 减少光源、阴影
- 光照烘焙贴图
- 遮挡剔除
等等
-
逻辑相关:
- 缓存池
- 利用多线程处理复杂逻辑
- 避免过多的
Update - 异步加载
- 预加载
- 定时主动 GC(比如过场景时)
等等
其实逻辑代码对性能的影响,只要不太过分,都还好,主要造成卡顿的往往是渲染、IO 相关
-
