縦にボタンがいくつか並んでおり、上下入力の時は通常通りフォーカスを移動するだけで、左右入力の時は特別な処理を行いたい...という風に解釈しましたが、ご質問者さんの意図と違う点がありましたらコメントください。
ご提示いただいたEvent Triggerのスクリーンショットのイベント欄に「Move (BaseEventData)」と表示されていますが、これはつまりイベントの引数として追加情報を受け取れることを表しているはずです。EventTriggerの実装を見ますに、Move
イベントの引数はIMoveHandler.OnMoveの引数のAxisEventDataがそのまま送られてくるようです。
ですので、たとえば仮にTest
メソッドを下記のようにしてやれば、フォーカス移動の方向に応じて処理を分岐させることができるんじゃないでしょうか?
lang
1using UnityEngine;
2using UnityEngine.EventSystems;
3
4public class PlayerSetupMenuController : MonoBehaviour
5{
6 public void Test(BaseEventData eventData)
7 {
8 var axisEventData = eventData as AxisEventData;
9
10 // フォーカス移動の方向に応じて分岐させることで...
11 switch (axisEventData.moveDir)
12 {
13 case MoveDirection.Left:
14 case MoveDirection.Right:
15 // 水平入力の場合と...
16 Debug.Log("Horizontal Navigation");
17 break;
18 default:
19 // それ以外、つまり垂直入力の場合とで異なる処理をさせられるはず
20 Debug.Log("Vertical Navigation");
21 break;
22 }
23
24 // 他にも、現在選択されているオブジェクトがどれであるかを調べることもできるでしょう
25 Debug.Log($"Selected object: {axisEventData.selectedObject.name}");
26 }
27}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 02:17