前回はにiOS10で新規に追加されたフレームワークについてご紹介しました。
今回は以前ご紹介したこちらの記事の続きでUnrealEngineのc++についてご紹介します。
前回までの調査で、PlayerControllerを継承したクラスの使い方間違っている可能性があることがわかったため
調査を続けたところ、実際の使用方法とは異なっていることがわかりました。
下記が、前回記事から抜粋した該当の個所になります。
——————
あとはPlayerControllerを継承したクラスは適当なObjectを作成した後、
AddBluePrintでUserWidgetと同じようにClassOptionsに適用します。
——————
他にも設定が必要な箇所があり、ソースコードで設定している値も異なっておりました。
まずは、Defultクラスには、UInventoryUserWidget(UserWidgetを継承したクラス)を設定します。
次に、ソースコードの修正です。
※修正前の内容は、前回記事をご覧ください。
ファイル名は前回参考にしたURLでの名前と一緒です。
■AMyPlayerController.h
public: UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Player, HUD and UI") TSubclassOfUserWidgetClass;//変更部分 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Player, HUD and UI") class UInventoryUserWidget* InventoryWidget;
■AMyPlayerController.cpp
if (UserWidgetClass) { if (!InventoryWidget){ InventoryWidget = CreateWidget(GetWorld(), UserWidgetClass);//変更部分 if (!InventoryWidget)return; InventoryWidget->AddToViewport(); InventoryWidget->SetVisibility(ESlateVisibility::Visible); } }
実行すると前回エラー文がでていた箇所は問題なく
最後まで処理が通っていることがが確認できました。
原因としては、CreateWidgetの引数に渡しているのがNULLだったため、エラーが出ていたようです。
しかし、実際にはActorが生成されていることを確認できましたが、私が想定していたWidgetが表示されません。
残念ながらなぜWidgetが表示されないのかまだ原因がわかっておらず、
引き続き調査していくことになります。
今回はここまでとします。
最後までご覧いただきありがとうございます。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。