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

标签 Tag 与层级 Layer

Tag 与 Layer 已掌握。下一课学习查找对象的方法。

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

🎯本节学习目标

  • 理解 Tag 与 Layer 的区别
  • 掌握设置与判断
  • 了解 Layer 在碰撞中的作用

🚀课程导读

“它是敌人还是子弹?”——用 Tag 给对象打标签,用 Layer 做分类管理。两者看似像,用途不同。

标签 Tag

给对象“贴名牌”。

  1. 选中对象,Inspector 顶部有【Tag】下拉框(默认 Untagged)。
  2. 【使用内置标签】下拉选择 MainCamera、Player、Enemy 等(新项目含默认标签)。
  3. 【新建标签】点下拉框底部的【Add Tag…】→ 在 Tags 列表输入新标签名(如 Enemy)→ 保存。
  4. 新建后回到对象 Tag 下拉选择刚建的 Enemy。
  5. 【代码判断】gameObject.CompareTag("Enemy") 返回 bool(推荐,比 == 高效且防报错)。
  6. 【用途】区分“这是什么”:敌人、玩家、墙壁、道具。
  7. 【删除标签】Tags 列表选中标签点减号(使用中的标签不能删)。
💡
判断标签优先用 CompareTag 而不是 gameObject.tag == "...",后者拼错会报错。

层级 Layer

给对象“分类编组”。

  1. 选中对象,Inspector 顶部的【Layer】下拉框(默认 Default)。
  2. 【新建 Layer】点下拉框 →【Add Layer…】→ 在空白槽输入层名(如 Player、Enemy、Wall)。
  3. 选中对象 Layer 设为对应层。
  4. 【用途1 碰撞矩阵】:Edit→Project Settings→Physics→Layer Collision Matrix,控制“哪些层之间会发生碰撞”(第 99 课)。
  5. 【用途2 相机渲染】:Camera 的 Culling Mask 可只渲染指定层。
  6. 【用途3 射线过滤】:Raycast 指定只检测某些层(第 100 课)。
  7. 【代码获取层编号】gameObject.layer(int)与 LayerMask.NameToLayer("Player") 配合。
  8. 【区别】Tag=标识身份(用于逻辑判断);Layer=分类编组(用于物理/渲染控制)。
💡
一个对象只能有一个 Tag 和一个 Layer;Layer 编号 0-31。

常见错误与排查

错误:CompareTag 报错:不存在该标签?
原因:标签名拼错或未创建
解决:确认 Tag 已在 Tag Manager 里创建,且代码里拼写一致。

动手练习

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

  • 创建一个 Enemy 标签并打到一个对象上
  • 在代码中用 CompareTag 判断并打印
  • 新建一个 Enemy Layer 并设置到对象

本节小结

Tag 与 Layer 已掌握。下一课学习查找对象的方法。

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

← 上一课销毁对象 Destroy