![](https://kinnaji.com/wp-content/uploads/2020/12/image-92.png)
※この記事で使用しているUnrealのVersionは04.26.0です。
例えば、適当なPersistentLevelに「A」というレベルと「B」というレベルをサブレベルにぶら下げたとします。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-87.png)
さらに、Actorクラスを継承したBlueprintを作成します。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-88.png)
作成したBPの中に、「Actor(Reference)」の型の変数を作成します。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-89.png)
出来たクラスを、先ほど作成したAというレベルとBというレベルに入れてみます。
しかし、ActorReferenceの変数にお互いを入れることはできません。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-90.png)
では、Actorクラス内の変数をActor(SoftObjectReference)にしてみます。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-91.png)
こうすることで、レベル間をまたいでアクターの参照をインスタンス側でも取得することができます。
![](http://kinnaji.com/wp-content/uploads/2020/12/image-92.png)
ここで注意なのが、
①変数で指定したアクターが、レベルが読まれていないと扱えない(当然)
→レベルの読み込み順番などに注意
②「IsValidSoftObjectReference」での判定は、Referenceが有効かどうかであって、引数に何かしらのアクターを入れていれば、アクターが入っているレベルがロードされていなくても有効になる。
オブジェクトがロードされているかは、一旦Referenceに変換してからIsValidを行う
![](http://kinnaji.com/wp-content/uploads/2020/12/image-93.png)
以上