C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

UE4/C++: AActor の Tick が来ない!・おまけ編

本編は以前書いた 「UE4/C++ Tick が来ない!そんなときのトラブルシュート備忘録」 です。今回はそのおまけ。

行動パターンで書くと「ああ、なんだ」と気づく事も多いのですが…

  1. Tick が来ない!(気づき)
  2. PrimaryActorTick.bCanEverTick = true していなかった!
  3. ctor を追加して PrimaryActorTick.bCanEverTick = true した!
  4. UE4Editor で Compile! そして Play! ... Tick がまだ来ない!!

こんなこと、少しばかりは UE4 に慣れてきた昨今でも、たまーに起こります。

(4) の段階で本来は解決しているはずの場合に、しかし Tick がまだ来ない場合、その理由は UE4Editor にあります。 UE4Editor は一度実行された ctor は Compile や Play を行っても再び呼ばれる事はありません(UE4のUObjectとctorとUE4Editorの仕組みの都合)。 BeginPlaySuper::BeginPlay し忘れていた場合などはこのトラブルは起こりませんが、 ctor に変更を加えた場合にはしばしば遭遇します。 ctor をいじった場合には UE4Editor を再起動するのが確実で安全です😂

と、いうわけで (4) の Compile の後、 UE4Editor を再起動すると Tick が来るようになります。 Tick 以外にも ctor の変更と UE4Editr での動作確認には注意が必要です。

今日もうっかり気付かずに数分間考え込みました💀 そういうわけで改めて備忘録として書いておく事にしました。