首页 > 解决方案 > MRTK 2.4 - ScrollingObjectCollection 不通过脚本更新

问题描述

我在我的场景中创建了一个通知面板,当有事情发生时会显示通知。这些通知只是作为子项添加到的按钮ScrollingObjectCollection
在此处输入图像描述

我遇到的问题是,在删除一个通知(中间那个)之后,集合没有更新。但是单击UpdateCollection-Btn 上的检查器将更新集合。我调试了一下,发现它知道删除一个后,只剩下两个通知。

private void DeleteNotification()
{
    if (NotifyManager.Instance.RemoveNotificationFromList(Id))
    {
        Destroy(this.gameObject);
        NotifyManager.Instance.ScrollingCollection.UpdateCollection();
    }
}

在此处输入图像描述

这是 Inspector 中的按钮调用UpdateCollection的内容ScrollingObjectCollection,它与我调用的方法相同:

if (GUILayout.Button("Update Collection"))
{
    scrollContainer.UpdateCollection();
    EditorUtility.SetDirty(scrollContainer);
}

有人知道如何通过代码在运行时更新该集合吗?

我的设置:

标签: unity3daugmented-realityhololensmrtkwindows-mixed-reality

解决方案


好的,我自己修好了。问题是所有都发生在一帧中,并且ScrollingObjectCollection没有处于删除通知的状态。所以我在我的 NotifyManager 中创建了另一个方法,在那里我等待帧结束,然后调用UpdateCollection.

private IEnumerator WaitBeforeUpdateCollection()
{
    yield return new WaitForEndOfFrame();
    scrollingCollection.UpdateCollection();
}

推荐阅读