using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ServersSmallTipWin : UIBase { [SerializeField] RectTransform content; [SerializeField] RectTransform arrow; [SerializeField] ScrollerController serversScroller; public static List serverIDList; protected override void OnPreOpen() { serversScroller.OnRefreshCell += OnRefreshCell; Display(); } protected override void OnPreClose() { serversScroller.OnRefreshCell -= OnRefreshCell; } protected override void NextFrameAfterOpen() { var worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition); Vector2 screenAdjustedPos = CameraManager.uiCamera.WorldToScreenPoint(worldPos); var beforePos = screenAdjustedPos; var beforeAdjustedPos = CameraManager.uiCamera.ScreenToWorldPoint(beforePos); var rectWidth = content.rect.width * Screen.width / canvasScaler.referenceResolution.x; screenAdjustedPos.x = Mathf.Clamp(screenAdjustedPos.x, rectWidth * 0.5f, Screen.width - rectWidth * 0.5f); screenAdjustedPos.y -= 40; var adjustedPos = CameraManager.uiCamera.ScreenToWorldPoint(screenAdjustedPos); adjustedPos.z = 0; content.position = adjustedPos; arrow.position = new Vector3(beforeAdjustedPos.x, arrow.position.y, 0); } public void Display() { serversScroller.Refresh(); for (int i = 0; i < serverIDList.Count; i++) { if (i % 4 == 0) { serversScroller.AddCell(ScrollerDataType.Header, i); } } serversScroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell.Display(cell.index); } }