浏览器嵌入,国旗文件
This commit is contained in:
1 parent
e7a3214cb5
commit
07feba912c
552 files changed
+39279
-8128
No files matched your search
@@ -0,0 +1,89 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
[RequireComponent(typeof(ScrollRect))]
|
||||
public class ScrollRectAutoScroll : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||||
{
|
||||
public float scrollSpeed = 10f;
|
||||
private bool mouseOver = false;
|
||||
|
||||
private List<Selectable> m_Selectables = new List<Selectable>();
|
||||
private ScrollRect m_ScrollRect;
|
||||
|
||||
private Vector2 m_NextScrollPosition = Vector2.up;
|
||||
void OnEnable()
|
||||
{
|
||||
if (m_ScrollRect)
|
||||
{
|
||||
m_ScrollRect.content.GetComponentsInChildren(m_Selectables);
|
||||
}
|
||||
}
|
||||
void Awake()
|
||||
{
|
||||
m_ScrollRect = GetComponent<ScrollRect>();
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
if (m_ScrollRect)
|
||||
{
|
||||
m_ScrollRect.content.GetComponentsInChildren(m_Selectables);
|
||||
}
|
||||
ScrollToSelected(true);
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
// Scroll via input.
|
||||
InputScroll();
|
||||
if (!mouseOver)
|
||||
{
|
||||
// Lerp scrolling code.
|
||||
m_ScrollRect.normalizedPosition = Vector2.Lerp(m_ScrollRect.normalizedPosition, m_NextScrollPosition, scrollSpeed * Time.deltaTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_NextScrollPosition = m_ScrollRect.normalizedPosition;
|
||||
}
|
||||
}
|
||||
void InputScroll()
|
||||
{
|
||||
if (m_Selectables.Count > 0)
|
||||
{
|
||||
if (Input.GetButtonDown("Horizontal") || Input.GetButtonDown("Vertical") || Input.GetButton("Horizontal") || Input.GetButton("Vertical"))
|
||||
{
|
||||
ScrollToSelected(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
void ScrollToSelected(bool quickScroll)
|
||||
{
|
||||
int selectedIndex = -1;
|
||||
Selectable selectedElement = EventSystem.current.currentSelectedGameObject ? EventSystem.current.currentSelectedGameObject.GetComponent<Selectable>() : null;
|
||||
|
||||
if (selectedElement)
|
||||
{
|
||||
selectedIndex = m_Selectables.IndexOf(selectedElement);
|
||||
}
|
||||
if (selectedIndex > -1)
|
||||
{
|
||||
if (quickScroll)
|
||||
{
|
||||
m_ScrollRect.normalizedPosition = new Vector2(0, 1 - (selectedIndex / ((float)m_Selectables.Count - 1)));
|
||||
m_NextScrollPosition = m_ScrollRect.normalizedPosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_NextScrollPosition = new Vector2(0, 1 - (selectedIndex / ((float)m_Selectables.Count - 1)));
|
||||
}
|
||||
}
|
||||
}
|
||||
public void OnPointerEnter(PointerEventData eventData)
|
||||
{
|
||||
mouseOver = true;
|
||||
}
|
||||
public void OnPointerExit(PointerEventData eventData)
|
||||
{
|
||||
mouseOver = false;
|
||||
ScrollToSelected(false);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user