//如果有新武学解锁,刷新当前列表 private void RefreshList(int unLockMartialID) { int newMartialLevel = PlayerMartialDataManager.Instance.GetMartialLevelByID(unLockMartialID); SSendWuXueData newMartialData = new SSendWuXueData() { dwWuXueID = unLockMartialID, byWuXueLevel = (byte)newMartialLevel }; MyMartialDataList.Add(newMartialData); int lineCount = Mathf.CeilToInt(MyMartialDataList.Count / 4); //行数 if (MyMartialDataList.Count % 4 == 0) { lineCount -= 1; } //新添加的武学下标 int index = (MyMartialDataList.Count) % 4 == 0 ? 3 : ((MyMartialDataList.Count) % 4 - 1); //如果新行数大于旧的行数,添加新的一行 if (lineCount <= PrevLineCount) { MartialItemAreaList[lineCount].AddItem(lineCount, index, this); } else { GameObject itemLine = NGUITools.AddChild(Grid.gameObject, MartialItemAreaPrefab); QinglongMartialItemArea itemArea = itemLine.GetComponent <QinglongMartialItemArea>(); itemArea.AddItem(lineCount, index, this); MartialItemAreaList.Add(itemArea); Grid.repositionNow = true; PrevLineCount += 1; } }
/// <summary> /// 根据武学类型显示武学列表. /// </summary> /// <param name="martialType">Martial type.</param> void ShowMartialList(MartialType martialType) { //初始化列表里的每个元素 //在Grid里生成所有的武学prefab(MartialItem),并给每个prefab添加点击事件回调 CurrentShowType = martialType; //获取当前要显示的所有武学信息 MyMartialDataList = PlayerMartialDataManager.Instance.GetMartialListByType(martialType); //武学排序 MyMartialDataList.Sort((left, right) => { if (left.dwWuXueID < right.dwWuXueID) { return(-1); } else if (left.dwWuXueID == right.dwWuXueID) { return(0); } else { return(1); } }); MartialItemAreaList.ApplyAllItem(p => Destroy(p.gameObject)); MartialItemAreaList.Clear(); int lineCount = Mathf.CeilToInt(MyMartialDataList.Count / 4); //行数 lineCount = lineCount <= 1 ? 2 : lineCount; //至少两行 PrevLineCount = lineCount; for (int i = 0; i < lineCount; i++) { GameObject itemLine = NGUITools.AddChild(Grid.gameObject, MartialItemAreaPrefab); QinglongMartialItemArea itemArea = itemLine.GetComponent <QinglongMartialItemArea>(); int perLineCount; //每行显示多少个图标 int remainCount; //剩余的武学图标 if (MyMartialDataList.Count <= 4) { perLineCount = (lineCount - 1 - i) * MyMartialDataList.Count; } else { remainCount = MyMartialDataList.Count - (i * 4); if (remainCount >= 4) { perLineCount = 4; } else { perLineCount = remainCount % 4; } } MartialItemAreaList.Add(itemArea); itemArea.Init(i, perLineCount, this); itemLine.transform.localPosition = Vector3.zero; } Grid.repositionNow = true; }