投稿記事

無料プランの記事 (61)

わんころのUE5勉強会 2023/05/17 23:14

【UE5】未だに変数のウォッチがよく分かってない話

UE5 にて Blueprint のデバッグをする際に役立つ機能の1つ、変数のウォッチが未だによく分かってないというお話です。

【公式ドキュメント】ブループリント デバッガ

使い方は上記ドキュメントに記載されています。



変数のピンで右クリック> "この値をウォッチ" と選択すると


青色の虫眼鏡マークが付き、ブレークポイントで止まったタイミングで、ウォッチ対象にした変数の中身がリアルタイムで確認できるようになります。


DummyFunc1 が実行された時点では、Boolean型の変数(DummyFlag)に True がセットされています。


ここからステップ実行していくと、ブランチの分岐から True 側を通り、DummyFlag へ False をセットします。
そのタイミングで、ウォッチ対象の変数がリアルタイムで変更され、現在は False であることが確認できます。



これを構造体とか配列の変数をウォッチするとこんな感じで見えますが、ノードに被ったり、インデントなどがなく一列で表示されているため見にくくなってます。

また、ブレークポイントで止まってる間はノードをずらすことは出来ないようです。



そこで、メニューバー「デバッグ」>「ブループリントデバッガ」を開くと、かなり情報が見やすくなります。


赤文字で 表示したいBPを選ぶ と書いてますが、ブレークポイントで止まると、自動でそのブループリントの情報がブループリントデバッガのウインドウに表示されます。

更に情報を展開すると、ウォッチ対象の変数がここに表示され凄く見やすくなっていることが確認できます。凄い便利になりました。


さて、前置きが長くなりましたが未だによく分かっていないというのがここからで、ウォッチ対象の変数は Blueprint グラフ上ではリアルタイムで更新されるんですが、ブループリントデバッガのウインドウではリアルタイムに更新されません。


例えば画像のように、初期値を 0 に設定した Integer型の変数を Increment Int するだけの処理を何個か繋げ、この変数をウォッチに登録し、ステップ実行していったという図です。

5回目の Increment Int(白い矢印がある所) はまだ実行前なので変数の値は 4 になっており、リアルタイムでここは変化していきます。


ブループリントデバッガの方で確認した時の画像です。
上半分がセルフ(この Actor 内の変数一覧が見れる部分です)で、下半分がウォッチに登録した変数です。

同じ変数を見ているのに、セルフの方は 4 になっているんですが、ウォッチに登録した方は 0 のままでリアルタイムで更新されていません。

この状態でウォッチを解除してもう一度ウォッチに登録するか、ブループリントデバッガパネルを閉じて、メニューバー「デバッグ」>「ブループリントデバッガ」でもう一度開くと 4 に更新されました。
(リアルタイムではなく手動で更新してるような感じです)

この挙動は UE5.0.3 / UE5.1.1 / UE5.2.0 で同じ挙動を示していることを確認しました。


UE4.27.2 ではウォッチした値はリアルタイムで更新されてました。


UE4 はメニューバー「ウインドウ」>「デベロッパーツール」>「ブループリントデバッガ」に入ってるんですね。少し探しましたよ。


UE4 はウォッチタブというのがあるみたいでここで一覧表示されるようです。こっちの方が見やすい気もしますね。

フォーラムや reddit 等含め一応ネットで調べてみましたが、検索が下手くそすぎて UE5 のブループリントデバッガの情報がそこまで見当たらなかったです(デバッグにこういうのが使えますよみたいなものしか確認できず)

デバッグは皆さんやってそうですし、この挙動のままバージョンアップしてきてるならこれが仕様なのかもと思ったり。


セルフ内で見るとか、Blueprint グラフ上で確認すれば見れなくはないんですが、配列や構造体みたいなものを見ようとするとブループリントデバッガの方が見やすいのと、更にウォッチに登録してるものだけを個別に確認できると見やすいと思うんですけどね...



2023-05-18 追記:
Twitter にて UE5.03 / UE5.1.1 / UE5.2.0 で同じ症状が発生している方からコメントを頂けました><
本当にありがとうございます!

不具合っぽいですね...
バグ報告みたいなの出来ればやってみたいけど英語のフォームっぽいので翻訳したものそのままでも大丈夫なのかしら...

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/05/08 22:37

自作ゲームの進捗12:インタラクト時のメッセージ表示


その辺りのものを調べた時に表示するメッセージ周りを実装。


今後のこともあるので出来るだけ簡単に扱えないかあれこれ考えてました。


インタラクト時、Widget へ表示したいメッセージを引数で送る処理などをまとめたベースBP を作成しました。

引数で渡してる EventMessage という変数は「Begin Play」で DataTable から読み込んだ文章を変数にセットしています。

Widget をどこに持たせるのがいいのか未だによく分かってませんが、とりあえず Player Controller に持たせることにしました。
(Blueprint Interface で表示したいメッセージを渡してます)



表示するメッセージは DataTable で準備しておき、RowName にそのイベント名が分かるよう設定。


あとはベースBP を継承してレベル上に配置し、インスタンス編集可能にした変数(EventName)に上記 DataTable で設定した RowName と同じ名前をセットすれば、インタラクト時に紐づいてるメッセージが表示されるようになりました。

Enum で扱えないかも試したんですが、Enum値 と Name型の比較をするなど扱い方がよく分からなかったのでこのような実装になりました。


同じ名前をセットしないといけない制限はついてしまいましたが、名前をコピペすれば大丈夫かなということで、簡単に扱えるようにはなったと思います。


最近のゲーム制作報告は BP で色々実装出来るので凄く楽しめております。画面上に何も反映しなくても、後々役に立つシステム面とか構築してる時とかめっちゃ楽しいです!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/05/07 19:00

自作ゲームの進捗11:ドアの開閉処理

進捗報告11回目になるのにまさかドアの開閉処理になるとは思いませんでしたね。

ただドアを開いて閉じるだけだったらわざわざ報告しなくてよかったんですが、これを機にデータドリブンなドアを作ってみたのでご報告。



動画内でドアが全く動かない、通常の開閉、ガチャガチャの三種類が実装されています。



CurveAsset をドアに指定するだけで挙動を切り替えれるようになったので、ドアごとにタイムラインを調整しなくてよくなりました。
(画像はドアをガチャガチャするもの)


ドアの Timeline 実装はこんな感じで、CurveAsset に直接角度を入れてそのまま動かしてます。

アセットなので使いまわしも利くのと、Blueprint で切り替えるのも簡単になってちょっと便利になったという報告でした。


これとは別にインタラクト時に固有のメッセージを表示する機能も整えてるので、次回それの報告になると思います。

全然進んでる気配はないけど楽しいですね~!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/04/27 21:12

アイコンやヘッダを変更しました

2023-05-05 Youtube & Twitter 開設から1年が経ちます。
早いですね...
そこに先んじてアイコンやヘッダを新しいものへ変更しました。

犬の中でも特に柴犬が好きなのでそちらをベースにしたアイコンにしました。

わんころと付いてた割に犬要素はこれっぽっちもありませんでしたのでせめてアイコンくらいは...と以前から作成を予定してましたがようやく完成です!

来たる一周年に向けて振り返り動画をなんとか完成させようと思います。
UE5 の操作と VOICEVOX のセリフを合わせる必要が一切ないので動画はかなり楽に作れそうですw

間に合わせるぞーーー!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/04/25 21:05

自作ゲームの進捗10:アイテム取得とセーブ&ロード

続けてゲームの進捗報告です。
以前アイテムのセーブやロードの仕組みだけは作ってたんですがちゃんと組み込んでいませんでした。

そこで今回はキーアイテムの取得フラグを実装し、セーブとロードの仕組みを整えました。


ゲーム開始時は懐中電灯を持っていませんが、取得後にセーブしてゲームを再開すると懐中電灯を持っています。
また、ロード時に取得しているアイテムはその場から消えるようにしました。


以降は内部的な話です。

この辺りの基本機能はアイテム全般に利用するため、インタラクト可能なアイテムのベースBP にまとめておき、どのアイテムを示すのかは Enum で列挙した変数を持っているので継承先で指定するようにしています。


Game Instance にアイテム取得フラグを管理してるマップ変数が置いてあるので、EventName(Enum)を渡し、Find した結果を返します。

「Get Game Instance」から Blueprint Interface を利用する方法は以前 Stack O Bot から学んだ手法です(BPI が Game Instance へのアクセサのような役割をしてくれてます)



キーアイテムを取得した際は Game Instance への通知と、キャラクターへの通知を同時に行うようにしました。

Game Instance には Save Data Object との連動も行ってるのでそのままセーブすれば、取得したアイテムのフラグなども保存され、ロード時にその情報が利用できるようになりました。

セーブやロード周りは実際に BP を組んで試さないと分からないので黙々と BP を組むしかなかったんですが、思いのほかスムーズにプロジェクトへ統合できました。


そして、なんと!
GW に4連休があります!!!!
(しれっと有給申請したら通ってました!)


ただですねぇ...5月5日、私の YouTube チャンネルが1周年を迎えるためそれ用の動画の準備で潰れそうですw

そんな動画作ってないで他の動画はよ!というのはあるんですが1年間振り返って~の動画は作りたいと思います!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

4 5 6 7 8 9 10

限定特典から探す

記事のタグから探す

月別アーカイブ

記事を検索