Unity 基础概念
Unity 是一款跨平台的游戏引擎,支持 2D 和 3D 游戏开发。其核心基于组件式架构(Component-Based Architecture),所有游戏逻辑都通过组件附加到 GameObject 上实现。
场景与游戏对象
- Scene:游戏的一个关卡或界面
- GameObject:场景中的基本实体,本身不具有功能
- Component:赋予 GameObject 行为和表现的模块
生命周期函数
void Awake() // 对象初始化时调用
void Start() // 第一帧更新前调用
void Update() // 每帧调用
void FixedUpdate() // 固定时间步长调用(物理)
void LateUpdate() // Update 之后调用
物理系统
Unity 内置 PhysX(3D)和 Box2D(2D)物理引擎。
Rigidbody
刚体组件使对象受物理引擎控制:
- Mass:质量
- Drag:空气阻力
- Use Gravity:是否受重力影响
- Is Kinematic:是否仅通过脚本控制
碰撞检测
| 回调函数 | 触发条件 |
|---|---|
| OnCollisionEnter | 碰撞开始 |
| OnCollisionStay | 碰撞持续 |
| OnCollisionExit | 碰撞结束 |
| OnTriggerEnter | 触发器进入 |
渲染管线
Unity 提供三种渲染管线:
- Built-in:传统管线,兼容性好
- URP:通用渲染管线,移动端友好
- HDRP:高清渲染管线,追求画质
Shader 基础
Unity 使用 ShaderLab 语法,配合 HLSL 编写着色器。Shader Graph 提供可视化着色器编辑。
资源管理
AssetBundle
将资源打包为独立文件,实现动态加载和热更新。适用于大型项目的增量更新。
Addressable Assets
新一代资源管理系统,基于 AssetBundle 封装,提供:
- 统一的资源引用方式
- 自动依赖管理
- 内存管理优化
性能优化
DrawCall 优化
- 静态/动态批处理
- GPU Instancing
- SRP Batcher
内存优化
- 对象池模式
- 纹理压缩与 Mipmap
- 合理使用
Resources.UnloadUnusedAssets()