我正在构建一些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();
}
}
答案 0 :(得分:0)
不清楚您为什么需要oldTexts。只需
foreach (Text text in texts)
{
Destroy(text.gameObject);
}
此外,这部分:
page.GetComponent<Text>().text = text;
可以简化为
page.text = text;
因为您已经从实例化中获取了Text
组件。