ALEXTANGXIAO / TEngine

Unity框架解决方案-支持HybridCLR(最好的次时代热更)与YooAssets(优秀商业级资源框架)。
MIT License
1.09k stars 236 forks source link

修复UIListBase和UILoopListWidget赋值问题 #53

Closed AlanWeekend closed 11 months ago

AlanWeekend commented 11 months ago

修复UIListBase和UILoopListWidget赋值问题

ALEXTANGXIAO commented 11 months ago

你好,我看了一下相关的代码改动和试了一下测试用例改动前后应该是等效的。m_selectIndex的get等效与selectIndex,AddRange和遍历Add也一样,你可以描述一下出问题的情况和提供测试代码么?

public override void OnRefresh() { m_loopList = CreateWidget<UILoopListWidget<TempItem, TempData>>(m_scrollRect.gameObject); m_loopList.itemBase = m_itemTemp; List<TempData> datas = new List<TempData>(); for (int i = 0; i < 100; i++) { datas.Add(new TempData(){index = i}); } m_loopList.SetDatas(datas); m_loopList.funcOnSelectChange += () => { Log.Debug(m_loopList.selectIndex.ToString()); }; base.OnRefresh(); }

AlanWeekend commented 11 months ago

你好,印象中add那块,cache字典的key值是-3000左右的负数,不是遍历的下标。 复现步骤: 1.在ItemData中定义一个回调。 2.在Item中的点击事件中触发这个回调。 3.在window中给回调赋值,回调中调用LoopView ListWidgt.GetItemList()

需求是给looplistview一个默认选中。

ALEXTANGXIAO commented 11 months ago

好的,这会我已经关电脑了,明天我看看

ALEXTANGXIAO commented 11 months ago

好的,感谢pr,cache里的key存的是GameObject的HashCode,确实应该如此添加