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);
    }
예제 #2
0
    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);
        }
    }