2024-07-29 / @syui

ue , ue5 , vrm / ue

ue5でbrushの動作がbuildと違う

今回はコード周りを整理した時の話です。

[issue] 一つのwidgetで各キャラのiconを設定する

objectにcbp_character_${name}を指定してボタンをクリックするとキャラが切り替えるwidgetを作成していました。

以前はiconごとに読み込むファイルを別々に作っていたのですが、その処理を簡略化しました。まずは各キャラのcbpをobjectに指定しているので、名前が異なります。objectからdisplay nameやobject name, object pathを取ってきて、brush(image)を設定するようにしたのですが、これはeditorでは動作しますが、buildで動作しないことがわかりました。

理由は不明ですが、object(name)がNoneになります。ボタンを押すと正常に動作するためobjectはそのキャラのものが使われているはずです。これは少し奇妙です。

そんなことを言っていても問題は解決しないので別の方法でやることにしました。objectとは別の値を用意して処理します。また、とりあえずインスタンス編集可能, スポーン時に公開, シネマティックスに公開にチェックを入れておくことにしました。

[issue] city sampleでclothが動作しない

他のprojectでは機能するのにcloth simulationが機能しない場合、project settingの問題です。

https://forums.unrealengine.com/t/no-cloth-simulation-in-ue5-but-works-in-ue4/619532

[ConsoleVariables]
- p.ClothPhysics=0
+ p.ClothPhysics=1

これはなぜclothが動作しないのか、わけがわからなくて困ってる人がいそうです。

[issue] bp_playerのキャラを切り替えるときに装備を外す

これも以前から放置していた問題ですが、アイの衣装を変更したときに他キャラでvisibility:falseするのがめんどくさかったので、自動で処理されるようにしました。

cbp_sandbox_characterをcastしてobjectのdisplay nameでもobject nameでも取ってきて、それがaiじゃなければset visibilityします。childrenにチェックを入れておきます。

なお、最初はdestroy actor childのようなものを探したのですが、unreal engineにはありませんでした。