【问题标题】:Unity gameobject not destroyingUnity游戏对象不破坏
【发布时间】:2018-11-24 04:49:57
【问题描述】:

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

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();
    }
}

【问题讨论】:

    标签: string unity3d gameobject


    【解决方案1】:

    不清楚为什么需要 oldTexts。做吧

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

    还有,这部分:

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

    可以简化为

    page.text = text;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多