LoginSignup
0
0

More than 3 years have passed since last update.

Blueprintの入力ピン出力ピンに同じ名前をつけてはならない(付けれる時がある)

Posted at

Blueprintの入力ピン出力ピンに同じ名前をつけてはならない(付けれる時がある)

PIE、Standaloneでの実行では起こらないのにLaunchなどで本番ビルドを実行すると例外を吐いて終了してしまうようになっていたのが、解決したのでメモ。

現象

image.png

PIEではなんの問題もないのに、Launchで実行すると上記の箇所、\Engine\Source\Runtime\CoreUObject\Private\UObject\ScriptCore.cppの2082行目、UObject::execLocalOutVariable内のOut = Out->NextOutParm;のところでOutがnullptrであるために例外を送出してクラッシュしてしまう。

原因

問題のBlueprint関数は、入力ピンにもValue、出力ピンにもValue、と同名をつけていた。

image.png

解決してしまったあと、再現しようと同名を設定しようにも上図の通りはねられてしまうので、本来であればこのエディター上でのチェックで同名にならないよう保証されているようなんですが、何らかの手順を踏めばこのチェックをすり抜けて入力ピンと出力ピンに同名を与えることができてしまうようです。

そしてこの状態でもPIEでは意図通りに動作してしまうため、Launchするまで異常に気づかなく、メモリ破壊やタッチの差でインスタンスが制作されてないまま処理が流れてくる時がPIE以外ではある、などの別の原因を疑って全く無意味な検証で時間を無駄にする、というわけです。

Blueprintはできないことはそもそも描けないようになっているはずだから…とデバッガを接続して例外を吐いたノード名は把握しているのにそのBlueprint関数の記述に問題があるなどとは露ほども疑わなかったのが敗因でした。

入出力ピンに同名をつける手順は再現していません。どうやって付けたんだ…?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0