79 lines
1.9 KiB
C#
79 lines
1.9 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.EventSystems;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
using System.Collections;
|
|||
|
|
|
|||
|
|
public class GraphicsSettingsScroll : MonoBehaviour, IDragHandler, IScrollHandler
|
|||
|
|
{
|
|||
|
|
public RectTransform[] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; // <20><> <20>迭<EFBFBD><E8BFAD> <20><><EFBFBD><EFBFBD>!
|
|||
|
|
public float <EFBFBD>巡<EFBFBD>ӵ<EFBFBD> = 2f;
|
|||
|
|
public float <EFBFBD>ټӵ<EFBFBD> = 50f;
|
|||
|
|
|
|||
|
|
private RectTransform <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
private RectTransform <EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>; // <20><><EFBFBD><EFBFBD> Ȱ<><C8B0>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
void Start()
|
|||
|
|
{
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = GetComponent<RectTransform>();
|
|||
|
|
StartCoroutine(<EFBFBD>ʱ<EFBFBD>ȭ());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
IEnumerator <EFBFBD>ʱ<EFBFBD>ȭ()
|
|||
|
|
{
|
|||
|
|
yield return null;
|
|||
|
|
yield return null;
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void <EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>()
|
|||
|
|
{
|
|||
|
|
foreach (RectTransform <EFBFBD><EFBFBD><EFBFBD><EFBFBD> in <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
{
|
|||
|
|
if (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> != null && <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.gameObject.activeInHierarchy)
|
|||
|
|
{
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
Debug.Log("<22><><EFBFBD>系<EFBFBD><E7B3BB>: " + <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.name);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Debug.Log("<22><><EFBFBD>系<EFBFBD><E7B3BB> <20><>ã<EFBFBD><C3A3>!");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
float <EFBFBD>ִ뽺ũ<EFBFBD><EFBFBD>()
|
|||
|
|
{
|
|||
|
|
if (<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD> == null) return 0;
|
|||
|
|
return Mathf.Max(0, <EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>.rect.height - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.rect.height);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void OnDrag(PointerEventData <EFBFBD><EFBFBD><EFBFBD>콺)
|
|||
|
|
{
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>();
|
|||
|
|
<EFBFBD>̵<EFBFBD>(-<EFBFBD><EFBFBD><EFBFBD>콺.delta.y * <EFBFBD>巡<EFBFBD>ӵ<EFBFBD>);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void OnScroll(PointerEventData <EFBFBD><EFBFBD><EFBFBD>콺)
|
|||
|
|
{
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>();
|
|||
|
|
<EFBFBD>̵<EFBFBD>(-<EFBFBD><EFBFBD><EFBFBD>콺.scrollDelta.y * <EFBFBD>ټӵ<EFBFBD>);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void <EFBFBD>̵<EFBFBD>(float <EFBFBD><EFBFBD>)
|
|||
|
|
{
|
|||
|
|
if (<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD> == null) return;
|
|||
|
|
float <EFBFBD><EFBFBD>Y = <EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>.anchoredPosition.y + <EFBFBD><EFBFBD>;
|
|||
|
|
<EFBFBD><EFBFBD>Y = Mathf.Clamp(<EFBFBD><EFBFBD>Y, 0, <EFBFBD>ִ뽺ũ<EFBFBD><EFBFBD>());
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>.anchoredPosition = new Vector2(0, <EFBFBD><EFBFBD>Y);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȭ()
|
|||
|
|
{
|
|||
|
|
Canvas.ForceUpdateCanvases();
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>();
|
|||
|
|
if (<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD> != null)
|
|||
|
|
{
|
|||
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>);
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>系<EFBFBD><EFBFBD>.anchoredPosition = new Vector2(0, 0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|