unity gameobject不破坏

时间:2018-11-24 04:49:58

标签: string unity3d gameobject

我正在构建一些somtware,每次加载特定屏幕时都会显示文本。我正在尝试删除所有以前的文本,以便每次加载视图时都可以加载新文本。但是由于某种原因,我似乎无法销毁保存文本的游戏对象,最终导致复制我已经拥有的文本。

private void SetPages(List<string> strings)
{
    Clear();
    foreach (string page in strings)
        AddPage(page);
}

private void AddPage(string text)
{
    Text page = instantiator.InstantiatePrefabForComponent<Text>(textPrefab);
    page.GetComponent<Text>().text = text;
    page.transform.SetParent(root, false);
    texts.Add(page);
}

private void Clear()
{
    if(texts != null)
    {
        foreach (Text text in texts)
        {
            oldTexts.Add(text);
        }
        for (int i = 0; i < oldTexts.Count; i++)
        {
            Destroy(oldTexts[i].gameObject);
        }
        oldTexts.Clear();
        texts.Clear();
    }
}

1 个答案:

答案 0 :(得分:0)

不清楚您为什么需要oldTexts。只需

foreach (Text text in texts)
{
    Destroy(text.gameObject);
}

此外,这部分:

page.GetComponent<Text>().text = text;

可以简化为

page.text = text;

因为您已经从实例化中获取了Text组件。