private NavigatableItem Find(int direction) { Transform parent = transform.parent; int siblingCount = parent.childCount; int rank = transform.GetSiblingIndex(); for (int i = 1; i < siblingCount; ++i) { int siblingIndex = (i * direction + rank + siblingCount) % siblingCount; NavigatableItem target = parent.GetChild(siblingIndex).GetComponent <NavigatableItem>(); if (target != null && target.gameObject.activeSelf) { return(target); } } return(null); }
protected void SetNavItem(NavigatableItem item) { if (currentNavItem == item) { return; } if (currentNavItem != null) { currentNavItem.GetComponent <SelectableItem>()?.SetSelected(false); } currentNavItem = item; if (currentNavItem != null) { currentNavItem.GetComponent <SelectableItem>()?.SetSelected(true); } }