妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

妹、デバッグ出来ないブループリントがある

妹「アクターをコピーすると、ブループリントのデバッグが変になるんだけど」

「変?」

妹「ブループリントのウィンドウを開いた状態で、そのプログラムが動くとオレンジに光るでしょ? ところがコピーすると光らないんだよ。1つだけしか反応がない」

「それはまた不思議な」

妹「最初のだけ反応するのかと思いきや、新しくコピーしたのが光ったり、でもコピーのうち1つだけしか光らないというのはいつも同じ」

妹「あと、その光ってるやつにしても、思ってるのより光が弱いというか、あんまり変わってないというか」

f:id:una_unagi:20150531030438p:plain

「見た感じソーメンと冷や麦ぐらいの違いしかないね」

妹「どう違うの!? いやその、明らかに色は変わってて、反応してるのはまちがいないんだけど、でも普通もっとオレンジでビビビって感じのが出るし、そもそも作ってる途中ではそうなってたと思うんだな……」

「うーん、ちゃんとコピーされたインスタンスは同じブループリントを参照してるし、原因不明」

妹「動きに問題はないから、いますぐデバッグする必要ないんだけど、変なままというのはちょっと気持ち悪い」

「じゃあちょっとこのデータを部屋に持ち帰って調べてくるよ」

妹「オタッシャデー」

「……というわけで、調べたみたところ、だいたいの仕組みはわかったよ」

妹「もうわかったのかよ」

「まず1つしか反応しない方だけど、これ元々1つしか反応しない仕組みになってるみたい」

妹「そうなの!?」

「その1つ以外はブレークポイントを置こうが何しようが反応しなかった。そしてその1つが選ばれる基準だけど、ブループリントのウィンドウを横にのばしていくと、デバッグフィルターという項目が出る。ここで選べる」

妹「全然気付かなかった。というか選んだ記憶がないんですが」

「ウィンドウを開く時にエディタ上で選択してたやつが選ばれたりとか。あと選択しないままの状態にした場合は機械的な基準で1つが選ばれる」

妹「1つしか見られないのかあ。そういうもんなのかなあ」

「普通のプログラミング言語だと1つだけ狙ってデバッグする方がむしろ難しいんだけどね。UE4の場合はそういう仕組みになってる。複数のクラスが混ざると線の点滅がぐちゃぐちゃになるからかな」

妹「あ、線。線の色の方はどうなった?」

「そっちもわかった。あれデバッグ対象のアクターが消滅すると、その瞬間にソーメンが全部冷や麦に変わるみたいなんだよ。別のイベントノードを作ってみたら、そっちも冷や麦になったから、実行されたかどうかとは関係ない」

妹「なんでオレンジにはならないの?」

「厳密に言うと一瞬だけなってるのかも。ふつうオレンジはノードが実行されてからしばらく後まで残る……というか、残さないと一瞬だから目で追えないんだけど、その仕組みより冷や麦化の方が優先されてる雰囲気が」

f:id:una_unagi:20150531032917p:plain

「Destory Actorの手前にDeleyを置いてみたんだよ。そしたらオレンジの点滅が出て、その後Destory Actorでアクターが消えた瞬間に冷や麦に変わるのが確認できた」

妹「それはわかったんだけど……なんでこれサイバイマンみたいになってんの? わたしのデータはこんなじゃなかったぞ」

「なんとなく。心がなごむかなあと」

妹「そ、そうなんだ……」