From 1fe72e022dad01d87d64ba90d22db110029b8136 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Sat, 26 Dec 2020 15:37:51 +0800 Subject: [PATCH] 召唤分身UI出现会把技能特效遮盖 --- Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs | 114 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 81 insertions(+), 33 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs index cc26693..8c88a41 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs @@ -14,20 +14,22 @@ { public class EndlessBuffSelect : Singleton<EndlessBuffSelect> { - public Text Prompt; - public List<SelectBuffIcon> IconList; - - public List<Sprite> SpriteList; - - /// <summary> - /// buff是否选中完成 - /// </summary> - private bool isCompleted; public event Action<int> BuffSelectCompleted; - private int SelectedIndex; + /// <summary> + /// 当前选择的索引,-1表示还未选中其中一个 + /// </summary> + private int SelectedIndex = -1; + + public Button SelectBtn; + + public GameObject EffectPrefabObject; + + private GameObject effectObj; + + private Vector3[] effectPosArr = { new Vector3(-21.6f, 0, 6.6f), new Vector3(0, 0, 6.6f), new Vector3(21.6f, 0, 6.6f) }; // Start is called before the first frame update private void Start() @@ -36,65 +38,111 @@ { IconList[i].OnSelectBuffCompleted += OnClick; } + + SelectBtn.onClick.AddListener(OnClickSelectBtn); } private void OnEnable() { - isCompleted = false; - Prompt.text = "点击选择buff"; - + SelectedIndex = -1; + for (int i = 0; i < IconList.Count; ++i) { - IconList[i].SetIcon(SpriteList[i]); - IconList[i].SetState(EndlessBuffSelectState.Normal); + IconList[i].Reset(); } + + } + + private void OnDisable() + { + if (effectObj != null) + Destroy(effectObj); } public void OnClick(int index) { - if (isCompleted) return; + // 如果点击同一个直接返回 + if (index == SelectedIndex) return; - isCompleted = true; + // 如果已经选择过了,设置一个之前选择的item + if (SelectedIndex != -1) + IconList[SelectedIndex].SetState(false); + SelectedIndex = index; - Prompt.text = "选择buff成功"; + IconList[index].SetState(true); - for (int i = 0; i < IconList.Count; ++i) + //PlayEffect(); + } + + + private void PlayEffect() + { + if (effectObj == null) { - if (index == i) - IconList[i].SetState(EndlessBuffSelectState.Selected); - else - IconList[i].SetState(EndlessBuffSelectState.Unselected); + effectObj = Instantiate(EffectPrefabObject); + GameObject particleSystemObject = GameObject.Find("ParticleSystemObject"); + effectObj.transform.SetParent(particleSystemObject.transform, false); + effectObj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); } + effectObj.transform.localPosition = effectPosArr[SelectedIndex]; + ParticleSystem ps = effectObj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.Play(); + } - StartCoroutine(DelayToClose()); + private void StopEffect() + { + if (effectObj != null) + { + ParticleSystem ps = effectObj.transform.GetChild(0).GetComponent<ParticleSystem>(); + ps.Stop(); + ps.Clear(); + } + } + + /// <summary> + /// 点击了选择按钮 + /// </summary> + public void OnClickSelectBtn() + { + if (SelectedIndex == -1) return; + + int index = SelectedIndex; + + AudioSourceManager.Ins.Play(AudioEnum.UI); + + HideBuffUI(); + + IconList[index].Fly(); + EndlessRandomTower.instance.SetCountDown(true,true); + + if (BuffSelectCompleted != null) + BuffSelectCompleted(index); } public void ShowBuffUI() { + EndlessMaskUI.instance.Show(); gameObject.SetActive(true); + AudioSourceManager.Ins?.Play(AudioEnum.ChooseBuff); } public void HideBuffUI() { + EndlessMaskUI.instance.Hide(); + StopEffect(); gameObject.SetActive(false); - } - - private IEnumerator DelayToClose() - { - yield return new WaitForSeconds(0.5f); - HideBuffUI(); - - if (BuffSelectCompleted != null) - BuffSelectCompleted(SelectedIndex); } public void Refresh(List<EndlessBuffConfig> list) { for (int i = 0; i < IconList.Count; ++i) { + IconList[i].SetIcon(list[i].Config.image); + IconList[i].SetQuality(list[i].Config.rare); IconList[i].SetName(list[i].Config.name); IconList[i].SetEffect(list[i].Config.brief); IconList[i].SetRare(list[i].Config.rare); + IconList[i].SetIsGold(list[i].EffectType == EndlessBuffEffectType.GoldAdd); } } } -- Gitblit v1.9.1