非activeからactiveにした時にbuttonを押したい
親オブジェクトのactiveをスクリプトによって切り替えています。
その際、子オブジェクトにつけた標準のButtonコンポーネントが機能しなくなります。
原因・解決策等教えて下さると幸いです。よろしくお願いします。
詳細追記
以下のような状態です。
PlayableDirectorがPlayOnAwakeなので、このオブジェクト__GoalCinema__のアクティブ状態をスクリプトによって切り替えています。アクティブ後、Timeline中のAnimationによって__card__が画面内に移動してきます。
ちょっと試したところでは、親オブジェクトをアクティブ→非アクティブ→アクティブと切り替えても、子オブジェクトのボタン機能が失われてしまうような現象は特に見られませんでした。どのように作ったら症状を再現できるか、より詳しく追記いただけますでしょうか?
すみません、まだ状況を再現できず原因を特定できない状態です(親再表示後もボタンをクリック、機能を実行できてしまう)...
スクリーンショットを参考に下記のような状況を用意してみたのですが、ご質問者さんと異なっている点や、他に気になる点はお心当たりあるでしょうか?
・親オブジェクトはシーン編集時点では非アクティブにしておく
・ゲームを実行し、適当なタイミングで親オブジェクトに対してSetActive(true)を実行する
・それによりタイムラインが動作を開始し、Cinemachineトラックによりカメラがプレイヤー用視点からボタン用視点へと遷移する(この辺はおそらく動作に無関係だと思いますが...)
・引き続きAnimationトラックによりボタンオブジェクトが画面外から移動してきて、クリップの再生が終わりボタンが定位置(さしあたり画面中心としましたが、おそらく位置がどこだろうが関係ないでしょう)に落ち着く
・ボタンをクリックしてみても反応しないといったことはなく、ボタンのインスペクタでOn Click ()にセットしておいたメソッドも正常に実行されてしまう
ボタンが機能しなくなった状態での様子についておうかがいしますが、ボタンをクリックするとクリックされたときの視覚的応答(ボタンを押し下げるとうっすら暗くなったり)はあるでしょうか?また、ボタンのインスペクタを見てみるとOn Click ()にセットしておいたメソッドが勝手に消えてしまっている(さすがにこれはないかとは思いますが...)なんてことはあるでしょうか?
あとは製作環境のバージョン違いももしかしたら影響があるかもしれませんね...
私はUnity 2018.3.11f1 Windows版、Cinemachine 2.2.8を使ったのですが、ご質問者さんはどうでしょうか(もし古いバージョンでしたら、制作上差し支えなければ念のためアップグレードしてみてもいいかもしれません)。
大変親身になっていただきありがとうございます。
記述してある状態と違いありません。
唯一、最後のボタンの反応だけ発生しません。
アクティブ開始時、ボタンクリック時の視覚的応答がありOnClick()は呼ばれます。
非アクティブ開始時、ボタンクリック時の視覚的応答すらありません。
と、記述していたところ違和感に気づき、解決しました。
ありがとうございます。非常にお恥ずかしい。
元々のアクティブ状況によってUIが前後することがあるようです。
背景に使っていた透過板が全面に出ており、クリックできない状態になっていました。
ありがとうございました。
一応、詳細を追記します。
画像で言うところのRewardCanvasが今回のボタンに該当しますが、
ボタン出現以前にResultCanvas(少し下に見えるもの)を表示していました。
今回はこのCanvasの順序を入れ替えるだけで解決しました。
本当にお手数おかけしました。
なるほど、解決しましたようで安心しました。
それにしても、最初にアクティブか非アクティブかで前後関係が入れ替わってしまうというのは興味深いですね...ぜひ覚えておきたいと思います。
Canvas間の前後問題ということは、Canvasの「Sort Order」あたりを調整してやれば最初にアクティブであっても非アクティブであっても一貫した前後関係にできそうでしょうかね?お時間のあるときにでも、自己解決回答などの形でご記載いただけますとありがたいです。
回答1件
あなたの回答
tips
プレビュー