private void Update() { switch (currentViewMode) { case ViewMode.View: if (t < 1) { t += Time.deltaTime * animationSpeed; float shift = animationCurve.Evaluate(t); canvasGroup.alpha = Mathf.Lerp(1, 0, shift); selectedItem.Rect.sizeDelta = Vector2.Lerp(startRectSize, pageSize, shift); Vector2 pageAnchorPosition = new Vector2(pageSize.x / 2, -pageSize.y / 2); selectedItem.Rect.anchoredPosition = Vector2.Lerp(startAnchorPosition, pageAnchorPosition, shift); } break; case ViewMode.Preview: if (animated) { if (t < 1) { t += Time.deltaTime * animationSpeed; float shift = animationCurve.Evaluate(t); canvasGroup.alpha = Mathf.Lerp(0, 1, shift); selectedItem.Rect.sizeDelta = Vector2.Lerp(startRectSize, defaultSize, shift); selectedItem.Rect.anchoredPosition = Vector2.Lerp(startAnchorPosition, viewRectAnchor, shift); selectedItem.Rect.localRotation = Quaternion.Lerp(startRotation, Quaternion.identity, shift); selectedItem.Rect.localScale = Vector3.Lerp(startScale, Vector3.one, shift); } else { selectedItem.transform.SetParent(content, true); selectedItem.ExitViewMode(); canvasGroup.interactable = true; selectedItem = null; animated = false; } } else { if (scrollT < 1) { scrollT += Time.deltaTime * scrollSpeed; scrollRect.horizontalScrollbar.value = Mathf.Lerp(startScroll, scrollStep * currentPage, animationCurve.Evaluate(scrollT)); } else { scrollRect.horizontalScrollbar.interactable = true; } } break; } }