如果从脚本调用 MRTK 网格对象集合 UpdateCollection() 不起作用

问题描述

我正在使用 MRTK 的 GridobjectCollection 脚本来显示多个按钮。我正在通过脚本动态实例化按钮,并将它们作为 GridobjectCollection 游戏对象的子项放置。现在您可以通过 UpdateCollection() 函数更新集合。除以下情况外,一切都按预期工作:

如果我想在同一个 GridobjectCollection显示一组不同的按钮,我会销毁集合的所有子项并像以前一样实例化新按钮并调用 UpdateCollection() 函数。但是集合没有正确更新。旧按钮被破坏,新按钮被添加,但位置发生了变化。如果我单击检查器中的 UpdateCollection 按钮,则该集合会正确更新。

为什么 UpdateCollection()修改集合内容后没有按预期工作?

解决方法

我刚刚解决了这个问题。如果集合在下一帧中更新,则更新按预期工作。 所以我正在启动一个协程并在那里调用更新函数。

private IEnumerator InvokeUpdateCollection()
{
    yield return null;
    gridObjectCollection.UpdateCollection();
}