Unity2Dでメモ帳を作っています
こちらのHypertextを使い
リンクテキストのクリック時にイベントが呼ばれるようにして、
こちらを参考に
文字にタグをつけて表示するためにInputFieldとTextを重ねて実行しています。
TextとInputFieldは同サイズ、同位置
下面↑ Text ← 変換した文字を表示、Hypertextをアタッチ、リンクを表示
上面↓ InputField ←入力受け付け、透明
_____________↑タッチ操作
上記のHypertextではIPointerClickHandler.OnPointerClick()を使ってクリックを検知しているのですが、InputFieldオブジェクトに重なっていてTextオブジェクトのタッチが検知されません。
HypertextBase.cs
C#
1 void IPointerClickHandler.OnPointerClick(PointerEventData eventData) 2 { 3 var localPosition = CalculateLocalPosition(eventData.position, eventData.pressEventCamera); 4 5 for (var s = 0; s < spans.Count; s++) 6 { 7 for (var b = 0; b < spans[s].BoundingBoxes.Count; b++) 8 { 9 if (spans[s].BoundingBoxes[b].Contains(localPosition)) 10 { 11 spans[s].Callback(text.Substring(spans[s].StartIndex, spans[s].Length)); 12 break; 13 } 14 } 15 } 16 }
InputFieldは入力カーソルの移動や文字入力等の入力操作を受け付ける必要があるため表側に配置しています。
TextはURLなどのリンクテキストをクリックしたときにクリックイベントを呼び出せるようになっているのですが裏側にあるためタッチイベントが発生しません
表裏同時にタッチイベントを起こす、または表で受け取ったイベントを裏にも渡せばいいと思ったのですがやり方がわからず調べてもわかりませんでした。
(表側のRaycastをオフにするという方法→表のタッチがなくなるため×)
(OnPointerClickをpublicにしてみたがエラー)
詳しい方アドバイスをお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。