MRTK 2.4 - ScrollingObjectCollection 不通过脚本更新
MRTK 2.4 - ScrollingObjectCollection not updating via script
我在我的场景中创建了一个通知面板,它会在发生某些事情时显示通知。这些通知只是作为子项添加到 ScrollingObjectCollection
:
的按钮
我遇到的问题是,在删除一个通知(中间那个)后,集合没有更新。但是在检查器中单击 UpdateCollection
-Btn 将更新集合。调试了一下,发现是知道删除一个后,只剩下两个notifications
private void DeleteNotification()
{
if (NotifyManager.Instance.RemoveNotificationFromList(Id))
{
Destroy(this.gameObject);
NotifyManager.Instance.ScrollingCollection.UpdateCollection();
}
}
这就是 Inspector 中 ScrollingObjectCollection
中的按钮 UpdateCollection
所调用的内容以及我正在调用的相同方法:
if (GUILayout.Button("Update Collection"))
{
scrollContainer.UpdateCollection();
EditorUtility.SetDirty(scrollContainer);
}
有人知道如何通过代码在运行时更新该集合吗?
我的设置:
- 统一 2019.4.18
- MRTK 2.4
好的,我自己修好了。问题是所有的事情都发生在一帧内,而 ScrollingObjectCollection
并没有处于通知被删除的状态。所以我在我的 NotifyManager 中创建了另一个方法,我等待帧结束然后调用 UpdateCollection
.
private IEnumerator WaitBeforeUpdateCollection()
{
yield return new WaitForEndOfFrame();
scrollingCollection.UpdateCollection();
}
我在我的场景中创建了一个通知面板,它会在发生某些事情时显示通知。这些通知只是作为子项添加到 ScrollingObjectCollection
:
的按钮
我遇到的问题是,在删除一个通知(中间那个)后,集合没有更新。但是在检查器中单击 UpdateCollection
-Btn 将更新集合。调试了一下,发现是知道删除一个后,只剩下两个notifications
private void DeleteNotification()
{
if (NotifyManager.Instance.RemoveNotificationFromList(Id))
{
Destroy(this.gameObject);
NotifyManager.Instance.ScrollingCollection.UpdateCollection();
}
}
这就是 Inspector 中 ScrollingObjectCollection
中的按钮 UpdateCollection
所调用的内容以及我正在调用的相同方法:
if (GUILayout.Button("Update Collection"))
{
scrollContainer.UpdateCollection();
EditorUtility.SetDirty(scrollContainer);
}
有人知道如何通过代码在运行时更新该集合吗?
我的设置:
- 统一 2019.4.18
- MRTK 2.4
好的,我自己修好了。问题是所有的事情都发生在一帧内,而 ScrollingObjectCollection
并没有处于通知被删除的状态。所以我在我的 NotifyManager 中创建了另一个方法,我等待帧结束然后调用 UpdateCollection
.
private IEnumerator WaitBeforeUpdateCollection()
{
yield return new WaitForEndOfFrame();
scrollingCollection.UpdateCollection();
}