目录
第一性原理:如何在庞大的游戏世界中“识别对象”?
在任何一个复杂系统中(比如一个 RPG、平台跳跃、射击游戏),我们都会遇到下面这个最原始的问题:
🧩 “我怎么知道这个 GameObject 是敌人?是玩家?是可拾取物?”
这就是 分类和识别的问题,本质上是“给物体贴标签”。
例如:你在超市看到东西时,靠什么判断它们的用途?
-
价格标签、商品名、分类标签(“牛奶”、“即食”、“冷冻”)
这就是 Unity 中 Tags 的本质:
“标签”是用来给 GameObject 添加意义的元数据,它不会改变对象的行为,但能让你识别、筛选、交互。
🛠️ Unity 中 Tags 的工作方式:
✅ 每个 GameObject 有一个 tag
属性,可以手动设置:
-
打开 GameObject,在 Inspector 面板中找到 Tag 属性。
-
Unity 提供了几个默认的,比如
Untagged
,Player
,MainCamera
。 -
你也可以自己添加自定义的,比如
"Enemy"
、"Item"
。
🔍 使用 Tags 的核心动机:
从逻辑判断角度来说,你不想写成这样:
if (other.gameObject.name == "Goblin123") // 易碎,不可维护
你希望这样判断:
if (other.CompareTag("Enemy"))
{
// 扣血、战斗逻辑等
}
✅ 这是第一性原理的一个关键点:
你不是在判断“这个具体对象是不是谁”,而是在判断“这个对象属于哪类”。
示例:简单碰撞检测用 Tag 判断类型
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
Debug.Log("碰到敌人了!");
TakeDamage();
}
}
📌 总结一句话:
从第一性原理出发,Tag 就是 GameObject 的“身份识别标签”,是逻辑世界中分类的手段,而不是行为的一部分。