Widget内で変動する変数(integer型)をBP_ThirdPersonCharacter内で使用する方法について

「ボタンを押すとキャラクターのスピードを強化する」この処理を作りたいんですが、ボタンを何度も押してもデフォルト値しか取れないです。

:black_medium_square:︎処理は以下の流れで組んでみました。(Widgetのブループリント名は”WBP_Button”です。)

①WBP_Button内でWidgetのボタンをクリックすると、変数名ClickCount(Integer)が1ずつ増加する

②BP_ThirdPersonCharacter内でCreateWidgetを作成して、”WBP_Button”を参照します。

③変数ClickCountをReturnValueから取り出して、CharacterMovementのMaxWalkSpeedに足していきます。



以上が処理の流れになるのですが、結果としてはボタンをクリック(変数ClickCountを増加)しても、全く変化がありません。そしてPrintStringで見てみると、数値はClickCountのデフォルト値のままでした。

この解決方法をご存知の方がいらっしゃいましたら、お力添えをしていただけますと幸いです。

よろしくお願いいたします!

  • Ue5.4
  • Windows11

見た感じ画像のLeftMouseButtonイベントとOnClicked(Button)の処理がチグハグです
それぞれ、
画面をクリックするたびに→LeftMouseButton
ボタンを押すたびに→OnClicked
が呼ばれます

LeftMouseButtonイベントの流れを見ると
1.新しいウィジェットを生成
2.そのウィジェットからClickCountを取得
3.ごにょごにょ計算してMaxWalkSpeedへセット

となっておりますが、
希望の処理のためには、ボタンを押すたびにMaxWalkSpeedを更新する必要があります

今のままだと毎回新しいウィジェットインスタンスが生成されているので、MaxWalkSpeedが全く更新されません

ボタンを押すたびにMaxWalkSpeedを更新するためには、処理をOnClicked側に書くようにしてみてください


BPブレークポイントはF9で使用できます

実行時にはF8キーで(Eject)デバッグモードに移行できます
このモードではアクターやそのコンポーネントの情報を見たり、編集したりすることもできます

また、以下のドキュメントではその他の様々なケースで使えるデバッグ機能が紹介されています

丁寧なご説明で迅速に対応していただきありがとうございます!
kiruru002さんのおかげで、無事に作動しました🙇
なぜ、ClickCountが更新されていないのかの理由も腑に落ちました。
また、デバック作業についての参考文献の共有もありがとうございます!
これで前に進むことができたので、少しずつですがゲーム開発に向けて頑張れます。

今度はご対応していただき非常に助かりました!
ありがとうございます!

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.