UE4 で Actor Component が REINST に呪われる条件がわかった。
ある Actor がある Actor Component をアタッチしていて、その Actor Component のクラスが元の Actor のクラスを参照していると REINST になる。直接的な参照でなく間接的な循環参照がある場合でも同じように呪われる。
しかし、REINST になるのはコンポーネントをアタッチしてるときのみで、変数として Actor Component のオブジェクトを持っているときにはこの現象は発生しない。
コンポーネントが REINST になると、上の画像のようにツールチップに REINST と表示される。しかし、エディタ上でコンポーネントの Blueprint を編集しているときにはこの表示は出ず、いったんエディタを閉じて再度開くとこれが出てくる。なので、作業中には気が付かない。
上の図のように Actor Component と Actor の間に循環参照が存在するときに REINST が発生するが、Actor 同士の循環参照は問題にならないらしい。
Actor Component は Blueprint のコードを分割するのに便利なので多用しているけど、気を付けないと簡単に落とし穴にはまってしまう。
#UE4