using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; [RequireComponent(typeof(Toggle))] public class SecondNodeItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public SecondNodeObject obj; private Toggle toggle; public Text uiName; public static bool replay;//是否播放第一个节点,在自动播放中使用 private SecondNodeManager secondNodeManager; private bool control = false; private float time; private void Awake() { toggle = GetComponent(); toggle.onValueChanged.AddListener(ValueChanged); } // Use this for initialization void Start() { MessageDispatcher.AddListener("ReplaySecondNode", SelectNode); secondNodeManager = TransformHelper.FindParentByName(transform, "SecondNodePanel").GetComponent(); } private void OnDestroy() { MessageDispatcher.RemoveListener("ReplaySecondNode", SelectNode); } /// /// 播放指定二级节点 /// /// private void SelectNode(IMessage data) { var nodeID = (int)data.Data; if (obj.nodeID== nodeID) { toggle.isOn = true; MessageDispatcher.SendMessage("Replay"); } } // Update is called once per frame void Update() { if (control) { time -= Time.deltaTime; if (time < 0) { secondNodeManager.ShowTagList(gameObject); control = false; } } } private void ValueChanged(bool isOn) { if (isOn) { SecondNodeManager.selectNode = obj; } } /// /// 设置节点属性 /// /// public void SetItem(SecondNodeObject nodeOjbect) { obj = nodeOjbect; SetUI(); if (replay) {//自动播放第一个节点 replay = false; toggle.isOn = true; MessageDispatcher.SendMessage("Replay"); } } public void SetUI() { uiName.text = obj.nodeName; } public void OnPointerEnter(PointerEventData eventData) { time = 1; control = true; } public void OnPointerExit(PointerEventData eventData) { control = false; secondNodeManager.HideTagList(); } }