Unity:在显式导航中使用自动导航

MBS*_*MBS 4 navigation unity-game-engine

我想对应用程序中的所有按钮使用显式导航。但对于某些按钮,我想保留“在右侧选择”以使用自动导航(例如:我知道下一个向左、向上和向下的按钮,但我不知道下一个向右的按钮)。

小智 5

您需要创建一个自定义Selectable,如果设置了值,则可以使用显式导航。您可以在您的案例中使用此代码,只需在检查器中保留需要使用自动导航的空白字段即可。

using UnityEngine;
using UnityEngine.UI;

namespace UI.CustomSelectable
{
    public class CustomSelectable : Selectable
    {
        [SerializeField]
        private Selectable upSelectable;

        [SerializeField]
        private Selectable downSelectable;

        [SerializeField]
        private Selectable leftSelectable;

        [SerializeField]
        private Selectable rightSelectable;

        public override Selectable FindSelectableOnUp()
        {
            return upSelectable != null ? upSelectable : base.FindSelectableOnUp();
        }

        public override Selectable FindSelectableOnDown()
        {
            return downSelectable != null ? downSelectable : base.FindSelectableOnDown();
        }

        public override Selectable FindSelectableOnLeft()
        {
            return leftSelectable != null ? leftSelectable : base.FindSelectableOnLeft();
        }

        public override Selectable FindSelectableOnRight()
        {
            return rightSelectable != null ? rightSelectable : base.FindSelectableOnRight();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)