生成后,FindGameObjectsWithTag不起作用

时间:2019-01-06 11:35:22

标签: unity3d onmousedown

脚本在构建中不起作用-在编辑器中可以。

它看起来像这样:

public GameObject [] fMassiv;

这些是我正在寻找的标签:

f_line14 (UnityEngine.GameObject)f_line15 (UnityEngine.GameObject)f_line16 (UnityEngine.GameObject)等。

void OnMouseDown () 
{
    string f_string = "f_line" + searchable number + "(UnityEngine.GameObject)";

    fMassiv = GameObject.FindGameObjectsWithTag (f_string); // and here in the build everything shuts up (((
}

后记(UnityEngine.GameObject)由您自己制作。从预制件中复制对象。

但是,这很好奇。 如果将f_string带到控制台,则会看到:f_line16 (UnityEngine.GameObject), 并且如果在TextBox中,则仅:f_line16

我试图进入阵列,所以:

fMassiv = GameObject.FindGameObjectsWithTag ("f_line" + number);

fMassiv = GameObject.FindGameObjectsWithTag ("f_line" + number + "(UnityEngine.GameObject)";

不起作用。

再次:在Unity中,一切正常。

对不起,我的英语

1 个答案:

答案 0 :(得分:2)

我注意到的一个细节:

在您的标签说明中,例如f_line14(UnityEngine.GameObject)(从上面复制)在f_lineXX和(UnityEngine.GameObject)之间有一个“空格”。

这行代码:

string f_string = "f_line" + number + "(UnityEngine.GameObject)";

不会生成相同的格式(缺少空格)。

您是否手动创建标签?还是按程序(通过代码)创建它们?通常,我无法想到任何理由都可以在编辑器中使用,但不能在构建中使用。

更多信息可能会有所帮助。形式示例:您的游戏对象仅仅是场景对象吗?还是他们实例化了预制件?