Unity初心者の俺が調べたことをメモするスレ (99レス)
上
下
前
次
1-
新
6
: 2023/08/31(木)18:33
ID:SnlLP3DA(3/4)
AA×
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
6: [sage] 2023/08/31(木) 18:33:55.46 ID:SnlLP3DA なんか多重送信されてるわ 「PlayerInputの方がEventSystemより実行タイミングが早い」っていう昨日の話だけ覚えておけば、どこが発火するかなんて正直割とどうでもいい気はするが念のため調べてみた。 ところでEventSystem(UnityのUI)って基本的にはイベントが発生したことは取得できるけど、「どういうキーが押されてイベントが発生したか」っていう情報を取得するのが難しい(できない?)気がする 例えば、画面上にA・B・Cの三つのUIが横並びで配置されていて、「B」がフォーカスを取得した時に発生させるイベントの内容を、直前のフォーカスが右にあったか左にあったかで条件分岐したい場合、 UIイベントが発生する原因となったキー操作そのものをEventSystemはEventDataに内包してくれる訳ではないっぽいので、工夫をしないとこの分岐は実現できなさそう 一つの案は直前までにフォーカスを取得していたA又はCにIDeselectHandlerを実装(又はSelectableがA・Cの基底クラスにあるならオーバーライド)して、フォーカスを失ってOnDeselectが実行された時に自身の情報をマネージャークラスに渡しておいてBにそれを見て判断させるという方法 この方法は分かりやすいけどUIのゲームオブジェクトが変動する・動的に生成される場合には「隣にいた」認定の処理が面倒になりそう もう一つの案はPlayerInputを利用して、該当するキー入力があった際に入力があったことをマネージャークラスやBに渡す方法 BがAの方から来たなら右キー、Cの方向から来たなら左キーが入力されているはずなので、Bはこの入力情報を見ればどっちから来たかが分かるし、UI要素が変動しても対応しやすい ただしイベント発火が絡む関係でパフォーマンス面では前者の手法に劣りそう http://mevius.5ch.net/test/read.cgi/gamedev/1693399963/6
なんか多重送信されてるわ の方がより実行タイミングが早いっていう昨日の話だけ覚えておけばどこが発火するかなんて正直割とどうでもいい気はするが念のため調べてみた ところでのって基本的にはイベントが発生したことは取得できるけどどういうキーが押されてイベントが発生したかっていう情報を取得するのが難しいできない?気がする 例えば画面上にの三つのが横並びで配置されていてがフォーカスを取得した時に発生させるイベントの内容を直前のフォーカスが右にあったか左にあったかで条件分岐したい場合 イベントが発生する原因となったキー操作そのものをはに内包してくれる訳ではないっぽいので工夫をしないとこの分岐は実現できなさそう 一つの案は直前までにフォーカスを取得していた又はにを実装又はがの基底クラスにあるならオーバーライドしてフォーカスを失ってが実行された時に自身の情報をマネージャークラスに渡しておいてにそれを見て判断させるという方法 この方法は分かりやすいけどのゲームオブジェクトが変動する動的に生成される場合には隣にいた認定の処理が面倒になりそう もう一つの案はを利用して該当するキー入力があった際に入力があったことをマネージャークラスやに渡す方法 がの方から来たなら右キーの方向から来たなら左キーが入力されているはずなのではこの入力情報を見ればどっちから来たかが分かるし要素が変動しても対応しやすい ただしイベント発火が絡む関係でパフォーマンス面では前者の手法に劣りそう
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 93 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.040s