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(); //scroll.onValueChanged.AddListener((a) => //{ // Debug.Log(a); //}); 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 = GetIndex(); content.GetChild(index).GetComponent().setNoActive(); //lightbg.GetComponent().DOFade(0, 0.15f); } public void Initial() { count = content.childCount; #if !(UNITY_ANDROID || UNITY_IOS) if (content.childCount - 2 > 0) { contentSize = 1f / (content.childCount - 2); } else { contentSize = 0; } #else if (content.childCount - 3 > 0) { contentSize = 1f / (content.childCount - 3); } else { contentSize = 0; } #endif //scroll.horizontalNormalizedPosition = 0; Canvas.ForceUpdateCanvases(); var i = PlayerPrefs.GetInt("UserInfoIndex"); Debug.Log($"51 {i}"); #if !(UNITY_ANDROID || UNITY_IOS) scroll.horizontalNormalizedPosition = contentSize/2+i*contentSize; #else scroll.horizontalNormalizedPosition = i * contentSize; Debug.Log(scroll.horizontalNormalizedPosition); #endif SetColor(); } void goLeft() { if (scroll.horizontalNormalizedPosition <= contentSize) return; goMove(-1); } void goRight() { Debug.Log(scroll.horizontalNormalizedPosition); if (scroll.horizontalNormalizedPosition+0.0001 >= 1) return; goMove(); } void goMove(int i = 1) { doAni(); if (!start) startPosition = scroll.horizontalNormalizedPosition; start = true; scrollValue = i*contentSize / 10; } private bool start = false; private float scrollValue = 0, totalScrollValue = 0, startPosition = 0; int GetIndex() { #if !(UNITY_ANDROID || UNITY_IOS) return (int)System.Math.Round( (scroll.horizontalNormalizedPosition + (contentSize / 2)) / contentSize, 0); #else return (int)System.Math.Round( (scroll.horizontalNormalizedPosition+ contentSize) / contentSize, 0); #endif } void SetColor() { int index = GetIndex(); //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 FixedUpdate() { 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; } } } }