167 lines
4.9 KiB
C#
167 lines
4.9 KiB
C#
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<ScrollRect>();
|
|
//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<Image>().color = Utils.HexToColorHtml("#ffffff00");
|
|
lightbg.GetComponent<Image>().gameObject.SetActive(false);
|
|
int index = GetIndex();
|
|
content.GetChild(index).GetComponent<QuickLoginUser>().setNoActive();
|
|
//lightbg.GetComponent<Image>().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()
|
|
{
|
|
Debug.Log($"{scroll.horizontalNormalizedPosition},{contentSize}");
|
|
if (scroll.horizontalNormalizedPosition+0.0001 <= 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
|
|
if (contentSize == 0)
|
|
{
|
|
return 1;
|
|
}
|
|
return (int)System.Math.Round(
|
|
(scroll.horizontalNormalizedPosition+ contentSize) / contentSize,
|
|
0);
|
|
#endif
|
|
}
|
|
void SetColor()
|
|
{
|
|
int index = GetIndex();
|
|
//lightbg.GetComponent<Image>().gameObject.SetActive(true);
|
|
//lightbg.GetComponent<Image>().DOFade(1, 0.2f);
|
|
//content.GetChild(index).GetComponent<QuickLoginUser>().setActive();
|
|
for (int i = 1; i < content.childCount - 1; i++)
|
|
{
|
|
string c;
|
|
if (i == index)
|
|
{
|
|
lightbg.GetComponent<Image>().gameObject.SetActive(true);
|
|
lightbg.GetComponent<Image>().DOFade(1, 0.2f);
|
|
content.GetChild(i).GetComponent<QuickLoginUser>().setActive();
|
|
//
|
|
}
|
|
else
|
|
{
|
|
content.GetChild(i).GetComponent<QuickLoginUser>().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;
|
|
}
|
|
}
|
|
}
|
|
}
|