using Assets.Scripts; using DG.Tweening; using System.Collections; using System.Collections.Generic; using System.Threading; using UnityEngine; using UnityEngine.UI; public class QuickLoginScroll : MonoBehaviour { // Start is called before the first frame update private ScrollRect scroll; private Transform content,lightbg; private float contentSize; private int count; [SerializeField] Button L, R; void Start() { scroll = gameObject.GetComponent(); content = gameObject.transform.Find("Viewport").Find("Content"); lightbg = transform.parent.Find("Light"); //Initial(); if (L != null) { UIManager.AddEvent(L.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick,(b)=> { goLeft(); }); //L.onClick.AddListener(goLeft); } if (R != null) { UIManager.AddEvent(R.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, (b) => { goRight(); }); //R.onClick.AddListener(goRight); } } private void doAni() { lightbg.GetComponent().color = Utils.HexToColorHtml("#ffffff00"); lightbg.GetComponent().gameObject.SetActive(false); int index = (int)System.Math.Round( (scroll.horizontalNormalizedPosition + (contentSize / 2)) / contentSize, 0); content.GetChild(index).GetComponent().setNoActive(); //lightbg.GetComponent().DOFade(0, 0.15f); } public void Initial() { count = content.childCount; if (content.childCount - 2 > 0) { contentSize = 1f / (content.childCount - 2); } else { contentSize = 0; } //scroll.horizontalNormalizedPosition = 0; Canvas.ForceUpdateCanvases(); var i = PlayerPrefs.GetInt("UserInfoIndex"); Debug.Log($"51 {i}"); scroll.horizontalNormalizedPosition = contentSize/2+i*contentSize; SetColor(); } void goLeft() { if (scroll.horizontalNormalizedPosition <= contentSize) return; goMove(-1); } void goRight() { if ((scroll.horizontalNormalizedPosition + contentSize) >= 1) return; goMove(); } void goMove(int i = 1) { doAni(); if (!start) startPosition = scroll.horizontalNormalizedPosition; start = true; scrollValue = i*contentSize / 30; } private bool start = false; private float scrollValue = 0, totalScrollValue = 0, startPosition = 0; void SetColor() { int index = (int)System.Math.Round( (scroll.horizontalNormalizedPosition + (contentSize / 2)) / contentSize, 0); //lightbg.GetComponent().gameObject.SetActive(true); //lightbg.GetComponent().DOFade(1, 0.2f); //content.GetChild(index).GetComponent().setActive(); for (int i = 1; i < content.childCount - 1; i++) { string c; if (i == index) { lightbg.GetComponent().gameObject.SetActive(true); lightbg.GetComponent().DOFade(1, 0.2f); content.GetChild(i).GetComponent().setActive(); // } else { content.GetChild(i).GetComponent().setNoActive(); } } } // Update is called once per frame void Update() { if (start) { scroll.horizontalNormalizedPosition += scrollValue; totalScrollValue += scrollValue; if (System.Math.Abs(totalScrollValue) >= contentSize) { scrollValue = 0; start = false; scroll.horizontalNormalizedPosition = startPosition + (totalScrollValue<0?-1:1)*contentSize; //Debug.Log(); SetColor(); totalScrollValue = 0; } } } }