这是我没有找到解决方案后必须解决的问题。

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


除非用户与ScrollRect内容进行交互,否则标准化位置值不会更新。
停用元素后,手动设置归一化位置将不起作用,因为它正在处理尚未更新的旧值(有关原因,请参见上文)。

最佳答案

我发现最好的解决方案是


在检测到ScrollRect内容中的子项后,强制执行Canvas更新。
然后,钳制该值,因为已正确更新了标准化位置。


示例代码:

        if (isRemoving) {
            Canvas.ForceUpdateCanvases();
            scrollRect.horizontalNormalizedPosition = Mathf.Clamp(scrollRect.horizontalNormalizedPosition, 0f, 1f);
        }

关于unity3d - 从内容中删除/禁用子元素后,在夹紧归一化位置时,ScrollRect无法正确更新位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36198505/

10-12 04:10