using UnityEngine.EventSystems; namespace UnityEngine.UI.Extensions { [RequireComponent(typeof(BookUI))] [AddComponentMenu("Ellyality/UI/Page Selector")] public class PageSelector : MonoBehaviour { void Start() { var layout = GetComponentInChildren() as Component; if (layout != null) LayoutRebuilder.ForceRebuildLayoutImmediate(layout.transform as RectTransform); var book = GetComponent(); foreach (var target in GetComponentsInChildren()) { var matrix = book.transform.localToWorldMatrix.inverse * target.transform.localToWorldMatrix; float x = matrix.m03 / book.Resolution.x; var trigger = target.gameObject.AddComponent(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.Select; entry.callback.AddListener((eventData) => { book.CurrentPage = Mathf.FloorToInt(x + 0.5f); }); trigger.triggers.Add(entry); } } } }