using FairyGUI; using System; using System.Collections; using UI.DailyWelfare; using UnityEngine; namespace GFGGame { public class LimitedRechargeDBGiftView : BaseWindow { private UI_LimitedRechargeDBGiftUI _ui; private int _count = 0; private int _minProgressOffset = 6; private int _maxProgressOffset = -8; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_LimitedRechargeDBGiftUI.PACKAGE_NAME; _ui = UI_LimitedRechargeDBGiftUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnTest.onClick.Add(OnClickBtnTest); InitProgressValueList(); } protected override void AddEventListener() { base.AddEventListener(); } protected override void RemoveEventListener() { base.RemoveEventListener(); } protected override void OnShown() { base.OnShown(); _count = 0; UpdateProgress(); } protected override void OnHide() { base.OnHide(); } private void OnClickBtnTest(EventContext context) { _count += 10; UpdateProgress(); } private int[] _progressValuePart; private int _partNum = 4; private void InitProgressValueList() { _progressValuePart = new int[_partNum]; int max = (int)_ui.m_progress.target.max; int average = (int)Mathf.Ceil((float)(_ui.m_progress.target.max / (_partNum - 1))); _progressValuePart[0] = 0; _progressValuePart[_partNum - 1] = max; for (int i = 1; i < _partNum - 1; i++) { _progressValuePart[i] = i * average; } } private void UpdateProgress() { int max = (int)_ui.m_progress.target.max; // 确定count的区间 if (_count == 0 || _count == max) { _ui.m_progress.target.value = _count; } else { int index = 1; for (; index < _progressValuePart.Length; index++) { if (_count < _progressValuePart[index]) { --index; break; } } // 计算进度条最小取值和最大取值,避免因为图标遮挡造成视觉错误 int minProgressValue = _progressValuePart[index] + _minProgressOffset; int maxProgressValue = _progressValuePart[index + 1] + _maxProgressOffset; if(_count == _progressValuePart[index] || _count == _progressValuePart[index + 1]) { _ui.m_progress.target.value = _count; } else { _ui.m_progress.target.value = Mathf.Clamp(_count, minProgressValue, maxProgressValue); } Debug.LogError("count:" + _count + "," + "progress:" + _ui.m_progress.target.value); } } } }