2

这是我在找不到解决方案后必须自己解决的问题。

问题是从 ScrollRect 的内容中删除 GameObject 元素后,它不会钳制其标准化位置,直到用户再次开始移动它。这可能会导致 ScrollRect 在显示最后一个元素并从父级停用最后一个元素时显示空白空间。

  • 在用户与 ScrollRect 内容交互之前,标准化的位置值不会更新。
  • 在停用元素后,手动设置标准化位置将不起作用,因为它正在处理尚未更新的旧值(原因见上文)。
4

1 回答 1

8

我发现的最佳解决方案是

  1. 在检测到 ScrollRect 内容中的子项被删除后,强制进行 Canvas 更新。
  2. 然后钳位值,因为标准化位置已正确更新。

示例代码:

        if (isRemoving) {
            Canvas.ForceUpdateCanvases();
            scrollRect.horizontalNormalizedPosition = Mathf.Clamp(scrollRect.horizontalNormalizedPosition, 0f, 1f);
        }
于 2016-03-24T10:58:44.437 回答