首页/ 第 6 章 · 游戏对象与组件交互/ 第 84 课
LESSON 84 · 游戏对象与组件交互

序列化字段 [SerializeField] 与 [Header]

序列化字段已掌握。下一课学 ScriptableObject 数据对象。

⏱ 约 13 分钟📊 难度:入门🗂 第 6 章 · 游戏对象与组件交互📍 第 84 / 300 课
课程进度
84 / 300

🎯本节学习目标

  • 掌握 SerializeField
  • 掌握 Header/Range 特性
  • 理解序列化的意义

🚀课程导读

直接在 Inspector 里调数值、拖引用,比写死代码爽多了。这一切靠“序列化”。

public 字段与序列化

字段出现在 Inspector。

  1. 【public 字段】自动出现在 Inspector 底部:public float speed = 5f; 可在面板改。
  2. 【好处】不用改代码就能调参(速度、血量、颜色)。
  3. 【private 字段】默认不在面板显示。
  4. 【序列化私有字段】[SerializeField] private float speed = 5f; 让私有字段也能在面板显示。
  5. 【不序列化】[System.NonSerialized] public int temp; 让 public 字段不出现在面板。
  6. 【序列化支持类型】int、float、string、bool、Vector3、GameObject 引用、组件引用、枚举、自定义类/List/数组。
  7. 【自动保存】面板改动保存到场景/预制体,下次打开还在。
💡
能用 Inspector 配置的就不写死:调参不用进代码,这是敏捷开发的关键。

常用特性 Attribute

让面板更整齐、更好用。

  1. 【Header】[Header("移动设置")] 在字段上方加分组标题。
  2. 【Tooltip】[Tooltip("每秒移动距离")] 鼠标悬停显示提示。
  3. 【Range】[Range(0, 10)] public float speed; 显示滑动条,限制范围。
  4. 【Space】[Space(10)] 添加垂直空隙。
  5. 【Min】[Min(0)] 限制最小值;[MinMaxSlider] 双端滑条(进阶)。
  6. 【组合示例】
  7. [Header("移动")] public float moveSpeed = 5f;
  8. [Range(0f, 100f)] public float jumpPower = 20f;
  9. [Tooltip("最大血量")] public int maxHp = 100;
  10. 保存后在 Inspector 看分组、滑条、提示效果。
  11. 【实战】把前面课程里的数字全部提取成序列化字段,让它们可调。
优秀的脚本 = 逻辑代码 + 清晰的序列化配置面板,让策划/自己免改代码调参数。

常见错误与排查

错误:改了 Inspector 的值但运行时没变?
原因:可能被代码覆盖(Start 里重新赋值)
解决:检查脚本是否有赋值覆盖;优先在字段默认值/面板里统一配置。

动手练习

课后小任务(做出来才算真的学会)

  • 把速度等参数改成 [SerializeField] 字段
  • 用 Header 分组、Range 限制范围
  • 体验在 Inspector 调参无需改代码

本节小结

序列化字段已掌握。下一课学 ScriptableObject 数据对象。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课事件与委托 delegate