/**************************************************************************** * 2021.7 DESKTOP-CLH3E67 ****************************************************************************/ using UniRx; using UnityEngine; using UnityEngine.UI; namespace QFramework { public partial class UITreeNode01 : UIElement { private TreeNodeItem _treeNodeItemModel; public Sprite expandNodeSprite; /// /// 收缩时效果 /// public Sprite m_ShrinkNodeSprite; /// /// 初始化方法 /// /// 节点数据模型 public void Init(TreeNodeItem treeNodeItem,ToggleGroup _group) { _treeNodeItemModel = treeNodeItem; selectToggle.group = _group; string conent = string.Empty; string tmpNumber = LUtilitys.DigitalToChinese(int.Parse(treeNodeItem.index)); conent = tmpNumber + " " + _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(); } else { selectToggle.isOn = false; selectToggle.onValueChanged.AddListener(on => { _treeNodeItemModel.ExPanded.Value = on; }); // 监测节点展开状态数据 _treeNodeItemModel.ExPanded.Subscribe(on => { if (on) { NewOperation(_treeNodeItemModel.equipmentUniqueID); ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, true); ExpandImg.Show(); RecoverImg.Hide(); selectToggle.targetGraphic = ExpandImg; selectIcon.sprite = expandNodeSprite; } else { ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, false); ExpandImg.Hide(); RecoverImg.Show(); selectToggle.targetGraphic = RecoverImg; selectIcon.sprite = m_ShrinkNodeSprite; } }); } // 节点点击事件添加 clickButton.GetComponent().onLeftClick.AddListener(() => NodeButtonLeftClick(treeNodeItem)); } private void NodeButtonLeftClick(TreeNodeItem _treeNodeItemModel) { selectToggle.isOn = true; // 重置 //TreeNodeData.Instance.ResetFontColor(_treeNodeItemModel.Content.Value); //NewOperation(_treeNodeItemModel.equipmentUniqueID); } /// /// 切换节点状态 /// /// /// public void ChangeChilderNodeItemState(ReactiveCollection 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); } }); } /// /// 新增操作 /// /// public void NewOperation(int _uniqueID) { CameraJumpManager.Instance.SetCameraPosture(_uniqueID); } } }