// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2022-03-02 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G.UI { using TMPro; using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using DG.Tweening; /// /// 打开宝箱动画 /// partial class OpenBoxWindow { /// /// 特效移动到指定位置 /// class MoveVFX : KUIWidget { private Transform _transform; private Transform _trg; private Vector3 _sta; private float _time = 0.7f; //飞向目标点所需的时间 private KUIPool _pool; public override void Refresh() { if (this.data is PropItemWidget _trgTransform) { _trg = _trgTransform.transform; _transform.localPosition = Vector3.zero; _sta = this.transform.position; //StartCoroutine(StartMove(_trg)); _transform.DOMove(_trg.position, _time).SetEase(Ease.OutCubic) .OnComplete(() => { _trgTransform.transform.GetChild(0).gameObject.SetActive(true); if (_pool) { _pool.ReturnItem(this.transform); } else { #if UNITY_EDITOR Debug.Log("有错误得检查:没找到对象池"); #endif Destroy(this.gameObject); } }); } } public void OpenVFXClick(int index) { for (int i = 0; i < _transform.childCount; i++) { _transform.GetChild(i).gameObject.SetActive(index == i); } } IEnumerator StartMove(Transform trg)//开始移动 { var dur = 0.0f; if (this.data is PropItemWidget _trgTransform) { while (dur <= _time) { dur += Time.deltaTime; transform.position = Vector3.Lerp(_sta, trg.position, (dur * dur) / (_time * _time)); yield return null; } _trgTransform.transform.GetChild(0).gameObject.SetActive(true); } if (_pool) { _pool.ReturnItem(this.transform); } else { #if UNITY_EDITOR && !UNITY_WEBGL Debug.Log("有错误得检查:没找到对象池"); #endif Destroy(this.gameObject); } } private void Awake() { _pool = this.transform.parent.GetComponent(); _transform = this.transform; } } /// /// 道具信息处理 /// class PropItemWidget : KUIWidget { #region Auto Generate #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] TextMeshProUGUI _tmpName; [KUIFlag] TextMeshProUGUI _tmpCount; [KUIFlag] Image _imgIcon; [KUIFlag] KUIImage _imgQuality; [KUIFlag] KUIImage _imgLevel; [KUIFlag] TextMeshProUGUI _tmpLevel; [KUIFlag] GameObject _goVFX_yellow; [KUIFlag] GameObject _goVFX_red; [KUIFlag] GameObject _goCloseVFX_yellow; [KUIFlag] GameObject _goCloseVFX_red; [KUIFlag] GameObject _goCloseVFX_yellowRed; [KUIFlag] GameObject _goCloseVFX_yellowQuick; [KUIFlag] GameObject _goCloseVFX_redQuick; #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null private bool _isShowRed = false; #endregion #region Method public override void Refresh() { if (this.data is Item.ItemInfo info) { _isShowRed = false; var prop = ItemProxy.Instance.GetStaticItem(info.id); _imgQuality.ShowSprite(prop.quality); IconProxy.Instance.SetSprite(_imgIcon, prop.icon); _tmpCount.text = "X" + info.count; if (prop.type == 3 || prop.type == 4) { if (prop.quality == 6) { _goVFX_red.SetActive(true); _goVFX_yellow.SetActive(false); } else if (prop.quality == 5) { if (Random.Range(1, 101) > 50) { _goVFX_red.SetActive(false); _goVFX_yellow.SetActive(true); } else { _goVFX_red.SetActive(true); _goVFX_yellow.SetActive(false); _isShowRed = true; } } else { _goVFX_yellow.SetActive(false); _goVFX_red.SetActive(false); } _goCloseVFX_red.SetActive(false); _goCloseVFX_yellow.SetActive(false); _goCloseVFX_yellowRed.SetActive(false); _goCloseVFX_redQuick.SetActive(false); _goCloseVFX_yellowQuick.SetActive(false); } else { //if (prop.quality == 6) //{ // _goVFX_red.SetActive(false); // _goVFX_yellow.SetActive(false); // _goCloseVFX_red.SetActive(true); // _goCloseVFX_yellow.SetActive(false); //} //else if (prop.quality == 5) //{ // _goVFX_red.SetActive(false); // _goVFX_yellow.SetActive(false); // _goCloseVFX_red.SetActive(false); // _goCloseVFX_yellow.SetActive(true); //} //else //{ // _goVFX_yellow.SetActive(false); // _goVFX_red.SetActive(false); // _goCloseVFX_red.SetActive(false); // _goCloseVFX_yellow.SetActive(false); //} _goVFX_yellow.SetActive(false); _goVFX_red.SetActive(false); _goCloseVFX_red.SetActive(false); _goCloseVFX_yellow.SetActive(false); _goCloseVFX_yellowRed.SetActive(false); _goCloseVFX_redQuick.SetActive(false); _goCloseVFX_yellowQuick.SetActive(false); } } } public void AllVFXCloce() { _goVFX_yellow.SetActive(false); _goVFX_red.SetActive(false); _goCloseVFX_red.SetActive(false); _goCloseVFX_yellow.SetActive(false); _goCloseVFX_yellowRed.SetActive(false); _goCloseVFX_redQuick.SetActive(false); _goCloseVFX_yellowQuick.SetActive(false); } public void OnGetBtnClick() //关闭自身遮罩,显示内容 { if (this.data is Item.ItemInfo info) { var prop = ItemProxy.Instance.GetStaticItem(info.id); if (!IsOpenKeepOut()) { if (prop.quality == 6) { _goVFX_red.SetActive(false); _goCloseVFX_red.SetActive(true); Invoke(nameof(OpenCheck), 2f); } else if (prop.quality == 5) { if (!IsOpenKeepOut()) { if (_isShowRed) { _goVFX_red.SetActive(false); _goCloseVFX_yellowRed.SetActive(true); Invoke(nameof(OpenCheck), 2f); } else { _goVFX_yellow.SetActive(false); _goCloseVFX_yellow.SetActive(true); Invoke(nameof(OpenCheck), 2f); } } } } } } private void OpenCheck() { GetWindow().CheckIsOpenAll(); } public void OpenKeepOut() //关闭自身遮罩,显示内容(被调用) { if (this.data is Item.ItemInfo info) { var prop = ItemProxy.Instance.GetStaticItem(info.id); if (!IsOpenKeepOut()) { if (prop.quality == 6) { _goVFX_red.SetActive(false); _goCloseVFX_redQuick.SetActive(true); } else if (prop.quality == 5) { if (_isShowRed) { _goVFX_red.SetActive(false); _goCloseVFX_yellowQuick.SetActive(true); } else { _goVFX_yellow.SetActive(false); _goCloseVFX_yellowQuick.SetActive(true); } } } } } public bool IsOpenKeepOut() //返回自身的遮罩已关闭 { return (_goVFX_yellow.activeSelf || _goVFX_red.activeSelf) ? false : true; } public int propQuality() //返回传入道具的品质 { if (this.data is Item.ItemInfo info) { var prop = ItemProxy.Instance.GetStaticItem(info.id); if (_isShowRed && prop.quality ==5) { return 5; } return (prop.quality - 1); } return 0; } private void Awake() { SetViewData(); var button = GetComponent