EXP_EXE
(EXP_EXE)
March 5, 2015, 8:38am
1
C++でUMGを表示させようと考えているのですが、Unreal Engine上のエディタ内でのプレイでは表示されるのですがパッケージ化して起動しようとするとエラーが発生して起動できなくなるのですが、これはC++の記述のやり方がいけないのでしょうか?
よろしくお願いします。
・HUD内のコンストラクタ
static ConstructorHelpers::FObjectFinder<UBlueprint> WidgetObj(TEXT("WidgetBlueprint'/Game/UMG/UMGTest.UMGTest'"));
if (WidgetObj.Object != NULL){
UMGUIClass = (UClass*)WidgetObj.Object->GeneratedClass;
}
・HUD内のBeginPlay
if (UMGUIClass) // Check the selected UI class is not NULL
{
if (!UMGWidget) // If the widget is not created and == NULL
{
UMGWidget = CreateWidget<UUMGTestWidget>(GetWorld(), UMGUIClass); // Create Widget
if (!UMGWidget)
return;
UMGWidget->AddToViewport();
UMGWidget->SetVisibility(ESlateVisibility::Visible);
}
}
一応プロジェクトファイルも置いておきます。
[プロジェクトファイル 2GBぐらいありますのでご注意ください][1]
・エディタ内
・パッケージ化したものを起動した時
32406-
alwei
(alwei)
March 5, 2015, 2:45pm
2
プロジェクトを落として実行しようとしてみましたが、Visual Studioからの実行ではビルドエラーがでました。
直接プロジェクトを立ち上げてからパッケージングを実行しようとしてもビルドエラーとなりパッケージングができなく症状が確認できないです。
もう一度確認をしてもらえるでしょうか?
EXP_EXE
(EXP_EXE)
March 5, 2015, 3:05pm
3
既に実行していたらすみません。多分、自分の環境だとUE4のインストール場所がSドライブなのでパスが違うためビルドできないかもしれません。UE4のエディタ上で「ファイル」→「VisualStdioプロジェクトの更新」を押して頂いて更新していただければ「Intermediate\ProjectFiles」内のファイルが更新されコンパイルが通るかと思います。できない場合は、Saved→Logsのログファイルいただけないでしょうか?
一応、自分でも一度ダウンロードして試していますので多分動くと思います。
alwei
(alwei)
March 5, 2015, 4:19pm
4
無事実行できました。確かにエラーで落とされるようです。
この件について調べてみたところ、以下の質問に対する回答がありました。
Hi All, I experienced something strange. All this time, I used C++ to create and show/hide widget. I used the following code: FStringAssetRef AssetRef("WidgetBlueprint'/Path/To/BPWidget'"); UObject* SyncResult =...
Accessing the blueprint at runtime is not allowed. Blueprints are an editor only time concept.
『ブループリントは実行時にアクセスを許可されていません。ブループリントはエディターオンリーでの時間的概念です。』
ここでいうブループリントはWidgetブループリントの事だと思いますが、結論としてC++側から実行時にWidgetブループリントにアクセスする事ができないという事だと思います。基本的にブループリントから使ってくださいという事が結論ではないかと。
何らかの方法で避ける事も出来るようですが、今はC++から使わないのが無難そうです。
EXP_EXE
(EXP_EXE)
March 6, 2015, 5:44am
5
ご回答していただきありがとうございます。なるほど、そもそもWidgetのブループリントを読み込むんで描画できない仕様なのですね。C++でUMGが利用できると色々と便利だと思ったんですけど残念です。今後のアップデートに期待したいと思います。