Unity3d GameObject.FindGameObjectWithTag返回(克隆)?

Unity3d GameObject.FindGameObjectWithTag返回(克隆)?,unity3d,tags,gameobject,animator,Unity3d,Tags,Gameobject,Animator,我有这个问题,当我使用 GameObject.FindGameObjectWithTag("red"); 它始于我在游戏对象中添加了一个动画组件 它回来了 red(Clone) 当游戏对象作为标记为“红色”的唯一游戏对象处于继承权中时 它只发生在我添加了animator组件之后,当我退出unity并重新启动unity时,问题消失了,我得到的错误是 MissingComponentException:“红色(克隆)”游戏对象没有“Rigidbody2D”,但脚本正在尝试访问它 场景中有一个红色

我有这个问题,当我使用

GameObject.FindGameObjectWithTag("red");
它始于我在游戏对象中添加了一个动画组件

它回来了

red(Clone)
当游戏对象作为标记为“红色”的唯一游戏对象处于继承权中时 它只发生在我添加了animator组件之后,当我退出unity并重新启动unity时,问题消失了,我得到的错误是

MissingComponentException:“红色(克隆)”游戏对象没有“Rigidbody2D”,但脚本正在尝试访问它

场景中有一个红色不是红色(克隆),而是我使用GameObject时在inspector中看到的。FindGameObjectWithTag(“红色”)它找到了红色(克隆),但场景中没有红色(克隆),只是红色,这发生在我添加了一个animator组件后,当我重新启动Unity时停止了,它可能是一个bug,只是想在这里检查id

编辑
正如我所说,场景中有一个红色,也有一个刚体,只是没有红色(克隆),谢谢你的时间这似乎是unity中一个长期运行的bug,可以追溯到4.3。希望能在unity 5中修复

似乎animator窗口出于某种原因导致克隆,而克隆是不可移动的

迄今为止,只有两种方法可以绕过这个问题

  • 如果尚未保存场景,请关闭animator窗口,关闭unity并重新启动unity。这将使您摆脱该对象
以防您已经保存了场景

  • 使用另一个标签代替,因此使用红色代替红色
一般建议,只要bug还在运行,就尽量避免使用FindGameObjectWithTag。因为稳定性没有保证

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

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

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

您是否碰巧实例化了相关的游戏对象?或者有任何实例化发生吗?没有,一点也没有,场景中只有一个红色游戏对象,没有实例化,我知道这是一个bug,我只是担心它不会在编辑器和实际玩家中发生,thanks@MXD:你提交错误报告了吗?还是有人做了?我也有这个问题,但仍然无法为bug报告一致地重现它。如果你有一个复制案例,请提交它(或者分享它,我会处理它)。@Heisenbug没有人能够持续地重新生成这个bug。所有已知的是,该对象是由Animator窗口引起的,该窗口似乎提供了一个不总是正确移除的重影对象。由于错误不一致,因此不在高优先级修复列表中。但是从unity 5开始,将会有新的动画师功能。希望它能修复这个错误,或者使我们能够始终如一地重新创建它。@MX D:是的,animator windows实际创建并运行的实例应该标记为HideAndOnSave,因此实际上不应该通过FindGameObjectWithTag搜索它。在unity 5中仍然没有发生。所以可能它已经被修复,或者由于某些原因不再发生。顺便说一句,如果你有这方面的消息,请告诉我