using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; using NaughtyAttributes; //thomas09 //this script is to be attached to all buttons in a scroll list. So that when using controller to navigate. It will position the scroll view accordingly. public class MoveScrollRect : MonoBehaviour, ISelectHandler { [Header("Only Assign in the inspector if the relationship is inactive.")] [SerializeField] ScrollRect scrollRect = null; private void Awake() { if (scrollRect == null) scrollRect = GetComponentInParent(); } public void OnSelect(BaseEventData _) { if (!scrollRect) { Debug.LogError("Could not find ScrollRect"); return; } if (Player.Instance.GetInputHandler().UsingGamePad) { RectTransform contentPanel = scrollRect.content; Canvas.ForceUpdateCanvases(); float prevX = contentPanel.anchoredPosition.x; Vector3 offset = contentPanel.position; offset.y -= 35.0f; Vector2 anchoredPosition = (Vector2)scrollRect.transform.InverseTransformPoint(offset) - (Vector2)scrollRect.transform.InverseTransformPoint(transform.position); anchoredPosition.x = prevX; contentPanel.anchoredPosition = anchoredPosition; } } }