123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /****************************************************************************
- * 2019.4 GIDEONHE-HOMEPC
- ****************************************************************************/
- using UniRx;
- using UnityEngine;
- using UnityEngine.UI;
- namespace QFramework
- {
- public partial class UINodeListCtrl : UIElement
- {
- UITreeNodeGroup group;
- private ToggleGroup m_ToggleGroup;
-
- protected override void OnBeforeDestroy()
- {
- }
- /// <summary>
- /// 设置Group信息
- /// </summary>
- /// <param name="_group"></param>
- public void SetGroupInfo(ToggleGroup _group)
- {
- m_ToggleGroup = _group;
- }
- /// <summary>
- /// 格式化生成所有节点
- /// </summary>
- /// <param name="itemPrefab">节点模板GO</param>
- /// <param name="treeNodeListModel">节点列表数据模型</param>
- /// <param name="clearList">是否清空列表</param>
- public void GenerateTreeNodeList(UITreeNode01 itemPrefab1, UITreeNode02 itemPrefab2, TreeNodeList treeNodeListModel, string index = "", bool clearList = true)
- {
- if (clearList) this.DestroyAllChild();
- SorTreeNode(treeNodeListModel.TreeNodeItems);
- for (int i = 0; i < treeNodeListModel.TreeNodeItems.Count; i++)
- {
- TreeNodeItem item = treeNodeListModel.TreeNodeItems[i];
- if (string.IsNullOrEmpty(index))
- {
- item.index = (i + 1).ToString();
- }
- else
- {
- item.index = index + "." + (i + 1).ToString();
- }
- if (i == 0)
- {
- AddNodeItem(itemPrefab1, itemPrefab2, item, true);
- }
- else
- {
- AddNodeItem(itemPrefab1, itemPrefab2, item);
- }
- //如果子节点列表大于0,递归
- if (item.ChildTreeNodeList.TreeNodeItems.Count > 0)
- {
- GenerateTreeNodeList(itemPrefab1, itemPrefab2, item.ChildTreeNodeList, item.index,false);
- }
- }
- treeNodeListModel.TreeNodeItems.ForEach(item =>
- {
-
- });
- }
- /// <summary>
- /// 重新排序
- /// </summary>
- private void SorTreeNode(ReactiveCollection<TreeNodeItem> TreeNodeItems)
- {
- for (int i = 0; i < TreeNodeItems.Count; i++)
- {
- for (int j = 0; j < TreeNodeItems.Count - 1 - i; j++)
- {
- if (TreeNodeItems[j].id > TreeNodeItems[j + 1].id)
- {
- TreeNodeItem tmpItem = TreeNodeItems[j];
- TreeNodeItems[j] = TreeNodeItems[j + 1];
- TreeNodeItems[j + 1] = tmpItem;
- }
- }
- }
- }
- /// <summary>
- /// 生成节点
- /// </summary>
- /// <param name="itemPrefab">节点预设体(模板)</param>
- /// <param name="itemData">节点数据模型</param>
- private void AddNodeItem(UITreeNode01 itemPrefab1, UITreeNode02 itemPrefab2, TreeNodeItem itemData, bool expand = false)
- {
- group = transform.GetComponent<UITreeNodeGroup>();
- if (itemData.Layer.Value == 1)
- {
- UITreeNode01 tmpObj = itemPrefab1.Instantiate();
- tmpObj.Parent(this)
- .LocalIdentity()
- .ApplySelfTo(self => self.Init(itemData, m_ToggleGroup)); //初始化节点
- group.AddTreeNode(tmpObj);
- if (expand)
- {
- // tmpObj.selectToggle.isOn = true;
- }
- }
- else if (itemData.Layer.Value == 2)
- {
- // 初始化节点
- UITreeNode02 tmpNode = itemPrefab2.Instantiate()
- .Parent(this)
- .LocalIdentity()
- .ApplySelfTo(self => self.Init(itemData));
- tmpNode.name = itemData.Content.Value;
-
- // 添加
- }
- }
- }
- }
|