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()