[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
863(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 13:34:36.73 ID:ZW9c9VSl(1/2) AAS
>>856856(2): 名前は開発中のものです。 [sage] 2020/03/16(月) 09:55:12.73 ID:LdLDk6nR(1/3) AAS
Unity2018を利用しています。
uGUIでユーザインターフェースを実装しています。
クリックした場所へ移動するというMMOでありがちな操作方法で動いています。
GUIをクリックしたときは動かないようにしてあるのですが、GUIの閉じるボタンをファンクションで動作させると、
GUIが閉じた瞬間に閉じるボタンがあった場所へ向かって移動をしてしまいます。
どうも閉じるボタンのファンクションが実行され、パネルが閉じた後でクリックした場所のRaycastを取得してしまい、
移動が暴発してしまうようでした。
仕方なくパネルを閉じる場合はは閉じるボタンのファンクションではなく、プレイヤーを操作しているクラス内で
閉じるボタンがクリックされたかどうかを判定しパネルを閉じているのですが、
毎回GetComponentやらFindやら重い処理で閉じるボタンの判定することとなったり、
すべての閉じるボタンを保持しておいてRaychastで取得したボタンと一致するかどうかを判定する、
とかボタン登録の量から考えて非現実な手法であったり、
名前を統一してその名前で作られたボタンを閉じるボタンにする、としたら同階層で名前の違う閉じるボタンの実装が必要になったりと
うまくいきません。
何よりボタンのファンクションではなくプレイヤーの動作アクションのクラスでどうにかしようとしている所がスマートではないことが気になります。
どうしたら移動を暴発させずに閉じるボタンでパネルを閉じることができるでしょうか?
自分はタイマー作って処理してるけど
UI上にマウスある時はタイマーの値が0.1とか小さな値が代入され続ける
これが0になるとキャラ操作可能になる
タイマー側は0以上だと絶えず減算し続けている仕組み
UIの動作が複雑になってくるとスクリプトの動作順や1フレーム単位での動機のズレで誤爆が起きたり起きなかったりして面倒な問題に
ウィンドウの開閉で問題が出やすいと思う
だから単純だけど誤爆が起きようが無いタイマーで数フレーのラグを稼いで操作を切り替えてるけど
868(1): 862 [sage] 2020/03/16(月) 15:18:30.98 ID:LdLDk6nR(3/3) AAS
>>863-865
ボタンとRaycastの判定がマルチスレッドで行われていることまで頭が向きませんでした。
ありがとうございました。
とりあえず修正が少なそうなコルーチンで想定通りの動きを起こすことができました。
同期ずれの方はこれでどうにかなるのかは不明ですが、今後問題になるようなら改めて大幅な修正をしようと思います。
単純に各メニュー画面を開いて処理させているだけなので、そんなに複雑なことをやっているつもりはないんで大丈夫だと思っていますが。>>863
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.042s