123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /****************************************************************************
- * 2021.7 DESKTOP-CLH3E67
- ****************************************************************************/
- using UnityEngine;
- using UniRx;
- using UniRx.Triggers;
- namespace QFramework
- {
- public partial class UITreeNode02 : UIElement
- {
- /// <summary>
- /// 选中后的颜色
- /// </summary>
- public Color m_SelectColor = Color.blue;
- /// <summary>
- /// 原始颜色
- /// </summary>
- public Color m_PrimitiveColor = Color.white;
-
- protected override void OnBeforeDestroy()
- {
- }
- private TreeNodeItem _treeNodeItemModel;
- /// <summary>
- /// 初始化方法
- /// </summary>
- /// <param name="treeNodeItem">节点数据模型</param>
- public void Init(TreeNodeItem treeNodeItem)
- {
- _treeNodeItemModel = treeNodeItem;
- string conent = _treeNodeItemModel.Content.Value;
- conent = treeNodeItem.index + " " + _treeNodeItemModel.Content.Value;
- if (conent.Contains("%"))
- {
- conent = conent.Split('%')[0];
- }
- else if (conent.Contains("@"))
- {
- conent = conent.Split('@')[0];
- }
- //监测(监听)内容数据
- _treeNodeItemModel.Content.Subscribe(content => contentText.text = conent);
- //根据数据模型的ShowHidden值监测,确定显示隐藏该Node
- _treeNodeItemModel.ShowHidden.Subscribe(value =>
- {
- if (value)
- Show();
- else
- Hide();
- });
- //根据数据模型的Layer值检测,改变Node位置
- _treeNodeItemModel.Layer.Subscribe(layer =>
- {
- var indentDistance = 15 * (layer - 1);
- });
- //如果没有子节点,隐藏Toggle
- if (treeNodeItem.ChildTreeNodeList.TreeNodeItems.Count == 0)
- {
- //selectToggle.Hide();
- for (int i = 0; i < selectToggle.transform.childCount; i++) selectToggle.transform.GetChild(i).gameObject.SetActive(false);
- }
- else
- {
- selectToggle.isOn = _treeNodeItemModel.ExPanded.Value;
- selectToggle.onValueChanged.AddListener(on => _treeNodeItemModel.ExPanded.Value = on);
- //监测节点展开状态数据
- _treeNodeItemModel.ExPanded.Subscribe(on =>
- {
- if (on)
- {
- ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, true);
- ExpandImg.Show();
- RecoverImg.Hide();
- selectToggle.targetGraphic = ExpandImg;
- }
- else
- {
- ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, false);
- ExpandImg.Hide();
- RecoverImg.Show();
- selectToggle.targetGraphic = RecoverImg;
- }
- });
- }
-
- //节点点击事件添加
- //以下为示例
- clickButton.GetComponent<ClickButton>().onLeftClick.AddListener(() => NodeButtonLeftClick(treeNodeItem));
- }
- private void NodeButtonLeftClick(TreeNodeItem treeNodeItem)
- {
- //// 重置
- contentText.color = m_SelectColor;
- }
- /// <summary>
- /// 切换节点状态
- /// </summary>
- /// <param name="nodeList"></param>
- /// <param name="hide"></param>
- public void ChangeChilderNodeItemState(ReactiveCollection<TreeNodeItem> nodeList, bool hide = false)
- {
- nodeList.ForEach(item =>
- {
- item.ShowHidden.Value = hide;
- if (hide == true && item.ExPanded.Value == false) return;
- if (item.ChildTreeNodeList.TreeNodeItems.Count != 0)
- {
- ChangeChilderNodeItemState(item.ChildTreeNodeList.TreeNodeItems, hide);
- }
- });
- }
- /// <summary>
- /// 重置为原始状态
- /// </summary>
- public void ResetToOriginalState()
- {
- // 颜色
- contentText.color = m_PrimitiveColor;
- }
- }
- }
|