unity-game-engine - GameObject.FindGameObjectWithTag 返回(克隆)?

标签 unity-game-engine tags gameobject animator

我遇到了这个问题,当我使用它时

GameObject.FindGameObjectWithTag("red");

当我向游戏对象添加动画组件时,它就开始了

它回来了

red(Clone)

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

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

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

编辑 正如我所说,场景中有一个红色,它也附加了一个 RigidBody2d,只是不存在红色(克隆),谢谢您的时间

最佳答案

这似乎是 Unity 中一个长期存在的错误,可以追溯到 4.3。希望能够在 unity 5 中得到修复

似乎动画器窗口由于某种原因导致克隆,并且不可删除。

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

  • 如果您尚未保存场景,请关闭动画器窗口,关闭 Unity 并重新启动 Unity。这应该可以让你摆脱这个物体。

如果您已经保存了场景

  • 请使用另一个标签,因此不要使用 red,而是使用 Red

一般建议,只要 bug 正在运行,请尽量避免使用 FindGameObjectWithTag。因为稳定性得不到保证。

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

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

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

关于unity-game-engine - GameObject.FindGameObjectWithTag 返回(克隆)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980776/

相关文章:

html - 表格的背景图片

svn - 在 Subversion 中为新主干添加标签

c# - 无法更改附加到游戏对象的脚本上的公共(public)变量。播放时恢复值

c# - GameObject.FindObjectOfType<>() 与 GetComponent<>()

unity3d - 团结 |查找具有指定父对象的子游戏对象

unity-game-engine - 如何将新的unity uxml(通过ui builder)添加到游戏屏幕?

android - Unity Android list 合并问题

c# - 将 360° 映射到 -1 到 1 之间的值

c# - Unity GameAnalytics 插件在 iOS 构建上失败

javascript - 如何用javascript修改html标签?