GameObject.FindGameObjectWithTag返回(克隆)?

时间:2015-01-16 09:27:11

标签: unity3d tags gameobject animator

我有这个问题,当我使用

GameObject.FindGameObjectWithTag("red");

当我向游戏对象添加动画组件

时,它开始了

返回

red(Clone)

当游戏对象在heirarchy中作为唯一具有标记“red”的游戏对象时 它只发生在我添加了动画组件后,当我退出统一并重新启动统一时,问题就消失了,我得到的错误是

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

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

修改 就是我怎么说场景中有一个红色的RigidBody2d也附在它上面,只是没有红色(克隆),谢谢你的时间

1 个答案:

答案 0 :(得分:4)

这似乎是一个长期存在的统一错误,一直追溯到4.3。希望将在团结中修复5

似乎动画窗口由于某种原因导致克隆,这是不可移除的。

到目前为止,只有两种方法可以绕过此问题

  • 如果您尚未保存场景,请关闭动画制作窗口,关闭Unity并重新启动Unity。这应该摆脱你的对象。

如果您已保存场景

  • 请改用其他标签,而不是红色使用红色

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

处理此问题的其他一些不太理想的方法:

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

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