private void OnScrollChange(float _Offsetpercentage) { for (int i = 0; i < listTransPerc.Count; i++) { int index = i; TransPercentageStruct itemStruct = listTransPerc[i]; itemStruct.curveItemData.Percentage += _Offsetpercentage; if (itemStruct.curveItemData.Percentage >= 1f) { itemStruct.curveItemView.transform.SetAsFirstSibling(); // 取出最后一个然后把当前的插入到开头 CurveScrollerItemData data = listData.RemoveEnd(); float offset = itemStruct.curveItemData.Percentage - 1f; data.Percentage = 0 + offset; listData.AddStart(itemStruct.curveItemData); itemStruct.SetData(data); OnTailChanged?.Invoke(); } else if (itemStruct.curveItemData.Percentage <= 0f) { itemStruct.curveItemView.transform.SetAsLastSibling(); //往上滑动 取出第一个然后把当前的插到最后一个 CurveScrollerItemData data = listData.RemoveStart(); listData.Add(itemStruct.curveItemData); float offset = 0f - itemStruct.curveItemData.Percentage; data.Percentage = 1f - offset; itemStruct.SetData(data); OnHeadChanged?.Invoke(); } listTransPerc[index] = itemStruct; SetTransPosForTweenPerc(listTransPerc[index].curveItemView.transform, listTransPerc[index].curveItemData.Percentage); } }