LoopScrollRect
LoopScrollRect copied to clipboard
在使用网格布局的情况下,Awake时候调用RefillCells,然后再调用RefreshCells,会导致Item被清空
首先Content使用GridLayerGroup,并且设置TopPadding为负数。 然后在Awake时候调用RefillCells,这时候显示正常, 当我点击Item时候,调用了RefreshCells,这时候在UpdateItems时候,threshold 等于0,导致算下来Content实际尺寸小于ViewBounds.Max,触发了DeleteItemAtStart,然后把所有的Item都清空了。 然后我往上查,发现在NewItemAtEnd方法中获取Item的Size时候(GetSize方法),这个方法的IncludeSpaceing为false,没有计算contentSpacing,导致m_GridLayer == null,所以获取的size为0,给threshold赋值也是0.
建议将GetSize方法中的方法由 // float size = includeSpacing ? contentSpacing : 0; 修改为 float size = contentSpacing; if (!includeSpacing) size = 0;
哈喽,我尝试构造了下 不过没有复现:
- DemoScene里的VerticalScroll_Grid,把TopPadding设为-50
- 启动之后然后尝试Refresh之后没问题
而且对应代码在RefillCells的时候其实threshold已经刷进值不是0了;以及m_GridLayout应该是一开始就获取的,不应该出现GetSize的时候对应0的情况才对...
能不能发一个最小demo给我?