我试图能够识别出我正在脚本中查看的几个 Collider2D 实例中的哪一个。基本想法是我有一个包含三个 Collision2D 组件的 Sprite。其中每一个都旨在检测和响应游戏中不同类型表面的碰撞。我已在编辑器中用相应的标识符标记了这些其他表面精灵。现在我想在我的玩家对象上标记 Collider2d 组件。这样,当我在脚本中检索 Collider2D 对象时,我可以通过标记属性来判断我正在查看哪个 Collider2D 实例。然后我可以让它们以不同的方式与这些表面交互。
问题是统一编辑器似乎在检查器中隐藏了我的这些值。我只能将标签分配给层次结构列表中存在的实体。如果我向层次结构添加一个组件,然后向该组件添加一些子组件(想象一下添加一个精灵,然后向该精灵添加一个 2D 盒子碰撞器),检查器窗口不会公开子项的标签。
您可以在上图中看到我从层次结构列表中选择了玩家。在检查器视图中,您可以看到几个 Box Collider 2D 组件,我已将它们附加到 Player GameObject。您还会注意到,无法修改与 Box Collider 2D 关联的标签。我在这里唯一可以更改的是与玩家游戏对象关联的标签。
我很困惑为什么编辑器中不提供此功能。很明显它来自附加的脚本。我可以使用 GetComponents() 从播放器检索 Collider2D 实例的实例,并且可以看到它们有一个标签属性,但是我无法从 UI 内修改该标签。我宁愿不必在脚本中使用它们相对于 Player 对象的位置来更新标签。这似乎是我应该能够设置的设计时属性。这可能吗?
如果你查看文档,你会发现这个标签属性代表了这个游戏对象的标签。您需要在刚体下创建子游戏对象,添加碰撞器并分别为每个游戏对象设置图层。