GameObject.FindGameObjectWithTag 返回(克隆)?

GameObject.FindGameObjectWithTag returning (clone)?

我有这个问题,当我使用

GameObject.FindGameObjectWithTag("red");

当我将动画组件添加到游戏对象时它开始了

回归

red(Clone)

当游戏对象在层次结构中作为唯一具有标签 "red" 的游戏对象时 它只发生在我添加动画组件之后,当我退出 unity 并重新启动 unity 时,问题就消失了,我得到的错误是

MissingComponentException:没有 'Rigidbody2D' 附加到 "red(Clone)" 游戏对象,但脚本正在尝试访问它。

场景中有一个红色不是红色(克隆)但我在检查器中看到当我使用 GameObject.FindGameObjectWithTag("red")它发现红色(克隆)但没有红色(克隆)在场景中只是红色,它发生在我添加了一个动画组件并在我重新启动 Unity 时停止了,它一定是一个错误,只是想在这里检查 id

编辑 就像我说的那样,场景中有一个红色,它也附有一个 RigidBody2d,只是不存在红色(克隆),谢谢你的时间

这似乎是 Unity 中一个很长的 运行 错误,可以追溯到 4.3。希望在 unity 5

中得到修复

似乎动画师 window 出于某种原因导致了一个克隆,该克隆是不可移除的。

目前已知只有两种方法可以绕过这个问题

  • 如果你还没有保存场景,关闭动画器window,关闭unity并重新启动unity。这应该让你摆脱这个对象。

如果您已经保存了场景

  • 改用另一个标签,所以不要使用 red,而是使用 Red.

一般建议,只要错误是 运行,尽量避免使用 FindGameObjectWithTag。由于无法保证稳定性。

其他一些不太理想的方法来处理这个问题:

  • 在使用之前找到并销毁克隆体:

    GameObject[] remaining = GameObject.FindGameObjectsWithTag(Tags.player);
    foreach (GameObject clone in remaining) {
    if(clone.name == "Player_Aleysha(Clone)"){
          GameObject.Destroy(clone);
    }