目录
一、Unity 编辑器版本选择
1. 为什么面试会问 Unity 使用哪个版本?
2. Unity 版本类型
二、Unity 项目模板区别
1. 核心模板(Core Template)
2. 示例模板(Sample Template)
3. 学习模板(Learning Template)
三、Unity 渲染管线
1. 什么是渲染管线?
2. Built-in Render Pipeline、URP、HDRP区别
三种管线总结
四、游戏循环、帧率与 Unity Update
1. 游戏循环(Game Loop)
2. 什么是帧率(FPS)?
3. 什么是帧时间(Frame Time)?
4. 30 FPS、60 FPS、120 FPS区别
5. Unity Update 与帧率的关系
6. Time.deltaTime和 speed 的关系
7. Time.deltaTime 的影响因素
8. 1 / Time.deltaTime 的含义
五、Unity Legacy Input System(旧输入系统)
1. Input.GetKey:检测具体按键
2. Input.GetButton:输入功能映射
3. Input.GetAxis:获取连续输入
4. Joystick Button 是什么?
5. GetAxis 和 GetAxisRaw 区别
三个 API 总结
六、Unity 角色移动、速度与 Rigidbody2D 物理运动
1. 从输入到角色移动的完整流程
2. 推荐的基础写法:Update 采样,FixedUpdate 应用物理
3. moveSpeed 到底表示什么
4. Rigidbody2D.velocity 与 Vector2:为什么要保留另一个分量
5. 速度还会受到哪些物理因素影响
6. 角色移动的四种常见方式
7. 本节常见错误清单
七、C# 字段声明与访问权限
1. 什么是字段(Field)
2. 字段、局部变量与属性的区别
3. public、private、protected
4. 为什么字段通常优先 private
5. 实例字段与 static 字段
6. 字段声明的常见错误
八、Unity 字段序列化与 Inspector 特性
1. 什么是 Unity 序列化
2. [SerializeField] 的原理与作用
3. 为什么项目里常用 [SerializeField] private
4. 常用 Inspector 特性
5. Inspector 值、代码默认值与常见问题
九、Unity 常用组件
1. Transform:每个 GameObject 都有的基础组件
2. Rigidbody 与 Rigidbody2D:让对象参与物理
3. Collider 与 Collider2D:定义碰撞范围
4. SpriteRenderer、MeshRenderer 与 SkinnedMeshRenderer:把对象显示出来
5. Animator:管理动画状态与过渡
6. AudioSource:播放音效与音乐
7. Camera:决定最终看到什么
8. 其他高频组件
十、Unity 组件获取方式
1. Inspector 拖拽引用:显式配置外部依赖
2. GetComponent<T>():获取当前 GameObject 上的组件
3. TryGetComponent<T>():获取可选组件并立即判断
4. GetComponentInChildren<T>():查当前对象和子层级
5. GetComponentInParent<T>():查当前对象和父层级
6. 为什么通常要在 Awake 缓存组件
7. 组件获取方式怎么选