# ソフト参照でロードしたObjectのCastが失敗する

**URL:** <https://forums.unrealengine.com/t/object-cast/506380>\
**Category:** 日本語 (Japanese)\
**Tags:** unreal-engine, cast, UE4-27, question, Blueprint\
**Created:** [March 13, 2022, 7:32am UTC](https://forums.unrealengine.com/t/object-cast/506380 "2022-03-13T07:32:12Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![SnelDev](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@SnelDev](https://forums.unrealengine.com/u/SnelDev)\
**Post date:** [March 13, 2022, 7:32am UTC](https://forums.unrealengine.com/t/object-cast/506380/1 "2022-03-13T07:32:12Z")

</div>

お世話になっております。

ソフト参照でウィジェットをロードし、普通のウィジェットと同じくAdd to Viewport等で利用しようとしています。Async Load AssetからアウトプットされたObjectをCastしたいのですが、Castが失敗してしまい、Nullとなってしまいます。こちらの理由と解決策について、ご教授頂けますでしょうか？

 ![ブループリント](https://d3kjluh73b9h9o.cloudfront.net/original/4X/d/0/6/d06d2ce9f65c9c1783387b4506d2620df52d83c3.png)  
 ![結果01](https://d3kjluh73b9h9o.cloudfront.net/original/4X/3/e/9/3e9f542a6446bc20c2bd3469d1cc9bb58d759b2b.png)  
 ![結果02](https://d3kjluh73b9h9o.cloudfront.net/original/4X/0/4/4/0442305b7687a61fde0f01f4973a2e14dd290a64.png)

---

<div class="post-metadata">

**Author:** ![T\_Sumisaki](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@T\_Sumisaki](https://forums.unrealengine.com/u/T_Sumisaki)\
**Post date:** [March 13, 2022, 9:21am UTC](https://forums.unrealengine.com/t/object-cast/506380/2 "2022-03-13T09:21:41Z")

</div>

Loadした結果取得されるのが `Widget` ではなく `WidgetBlueprint` であるからです

`AsyncLoadAsset` で返ってくるObjectは、 **Assetそのもの** を指しています  
Widgetとして初期化されたものではなく、その前段階のものなので、当然WidgetにCast出来ません

正しいやり方は、AsyncLoadAssetの終了後にきちんと `CreateWidget` することです  
Actorなら `SpawnActorFromClass` でSpawnしてください

---

<div class="post-metadata">

**Author:** ![SnelDev](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@SnelDev](https://forums.unrealengine.com/u/SnelDev)\
**Post date:** [March 13, 2022, 10:06am UTC](https://forums.unrealengine.com/t/object-cast/506380/3 "2022-03-13T10:06:23Z")

</div>

ご回答いただき、ありがとうございます。

> Widgetとして初期化されたものではなく、その前段階のものなので、当然WidgetにCast出来ません

なるほど、つまり画像のような形になるということでしょうか？

こちらの場合、ウィジェットやアクターに関しては作成方法がわかったのですが、データテーブルやデータアセットの場合、「create widget」や[spawn actor from class」に当たる部分はどのようにオブジェクトを作成したらよいでしょうか？

 ![image](https://d3kjluh73b9h9o.cloudfront.net/original/4X/e/3/7/e372a407fe0503ffc99a9ec9d15b0d8a7774d1d9.png)

---

<div class="post-metadata">

**Author:** ![T\_Sumisaki](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@T\_Sumisaki](https://forums.unrealengine.com/u/T_Sumisaki)\
**Post date:** [March 13, 2022, 12:09pm UTC](https://forums.unrealengine.com/t/object-cast/506380/4 "2022-03-13T12:09:53Z")

</div>

DataTableなどのAssetは最初のとおりAssetとしての型にCastすればよいです

---

<div class="post-metadata">

**Author:** ![SnelDev](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@SnelDev](https://forums.unrealengine.com/u/SnelDev)\
**Post date:** [March 13, 2022, 12:23pm UTC](https://forums.unrealengine.com/t/object-cast/506380/5 "2022-03-13T12:23:36Z")

</div>

なるほど、そのままで良いのですね。  
理解できました！  
ありがとうございます！
