【UE4C++】ビルドは成功したがfailed to open descriptor file と書かれているダイアログが出たときの対処法

パッケージングではなくて、ビルドしてエンジンを起動するときにエラーが出たときの対処法です。

環境

  • Windows10
  • Visual Studio 2017
  • UE4エディタはランチャー版のUE4.24

手順

  • Intermediateフォルダを消去
  • .uprojectファイルを右クリックしてGenerate Visual Studio project files
  • Visual Studioのソリューションエクスプローラーでプロジェクトを右クリックして、Set as StartUp Project
  • もう一回ビルドしてみる

【UE4C++】UMG関係のプラグインを作ろうとしてリンクエラーが出る場合

こんにちは!タカオです。
今回はタイトルの通り、UMG用のプラグインをC++で作ろうとした場合にリンクエラーが大量に出てきたときの対処法です。

開発環境は
Windows10
Visual Studio 2017
UE4エディタはランチャー版でUE4.23
です。

続きを読む 【UE4C++】UMG関係のプラグインを作ろうとしてリンクエラーが出る場合

【UE4C++】BPのコンストラクションスクリプトが呼ばれる前にメンバー変数を変える方法

こんにちは!タカオです。

今回は
C++でアクターをスポーンするとき、引数を指定して生成するということができないようなので、
それをある程度対処する方法です。

開発環境:
UE4.20.3
Windows10

ふつうにスポーンする場合は、

FActorSpawnParameters spawnParameters;
spawnParameters.Owner = this;
auto myActorClass = TSubclassOf<AMyActor>();

auto spawnLocation = FVector::ZeroVector;
auto spawnRotation = FRotator::ZeroRotator;

SpawnActorの引数に使う変数を用意して、

auto actor = GetWorld()->SpawnActor<AMyActor>(myActorClass, spawnLocation, spawnRotation, spawnParameters);
こんな感じ。
これだとコンストラクタに引数を指定できません。

続きを読む 【UE4C++】BPのコンストラクションスクリプトが呼ばれる前にメンバー変数を変える方法

【UE4C++】UE4.20.3でC++プロジェクトのパッケージングができない場合

私がUE4でC++を使うと、よくこのようなことが起こります。

環境は
Windows10
Visual Studio 2017
UE4.20.3
です。

プラグインをパッケージ化しようとしたら、GetReferenceNearestTargetFrameworkTaskという文がでてパッケージングができないという事態に遭いました。

そんなときは、Visual Studio 2017のインストーラを開いて、
Visual Studio Build Tools 2017と書かれている部分の「変更」ボタンを押して(「更新」になっている場合は まずそれを押して更新します)、

個別のコンポーネントタブを開きます。

NuGet パッケージマネージャーというのがスクロールしていると見つかるので、それをチェックします。

右下の「変更」ボタンを押して待ちます。

そしたら、パッケージングが成功するかもしれません。

参考:
https://answers.unrealengine.com/questions/741965/cannot-generate-project-file-after-vs2017-update.html

UE4のメモ(UnrealC++)

UnrealEngine4(のUnrealC++)で忘れそうなことをメモしておくページ。

開発環境は

Windows10
Visual Studio 2017
UE4エディタはランチャー版

BPと連携

ActorComponentを継承しているクラスをBPで継承させたい

ActorComponentを継承しているクラスをBPで継承させたい場合はUCLASSの部分にBlueprintableを付ける

UCLASS( ClassGroup=(Custom), Blueprintable, meta=(BlueprintSpawnableComponent))

変数(IntegerとかFloat)の範囲を指定したい

変数(IntegerとかFloat)の範囲を指定したいときは

UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "1", ClampMax = "100"))

変数をエディタ上では見えるだけで、編集できないようにしたい場合

UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
int 変数名;
って書くと、レベルエディタ上とかでは見えるけど編集できなくなる。

構造体

  • 構造体を作るときは#include “ヘッダーファイルの名前.generated.h”を追記しなければいけない
  • 構造体の変数で、Object ReferenceではなくてClass Reference(4つの内で紫のやつ)を使いたい場合は
  • UPROPERTY(EditAnywhere, BlueprintReadWrite)
    TSubclassOf 変数名;

    参考:https://answers.unrealengine.com/questions/259160/c-equivalent-of-blueprint-class-reference.html

    その他

    uprojectのバージョンを変えたら

    uprojectのバージョンを変えたら、Visual Studioのソリューションエクスプローラで、ソリューションを右クリックして「スタートアッププロジェクトに設定」をクリックしておく。
    参考:https://answers.unrealengine.com/questions/509141/unereal-editor-dont-start-cant-find-unusedue4exe.html?sort=oldest

    デバッグポイントをセットしたのに止まらない?

    ソリューション構成をDebugGame Editorに変更したら止まるようになった。(Visual Studio 2017)

    Visual Studioでソリューション構成をShippingにしたら、ビルドしてもエディタに反映されなくなった

    エディタでコンパイルボタン押したら反映された

    【UE4】プラグインのTypeをRuntimeにしたのにShippingでパッケージ化するとロードされないとき

    環境は、
    Windows10
    UE4.13.2
    です。

    .upluginファイルでTypeをDeveloperからRuntimeにしないと
    Shippingでパッケージ化した時にプラグインは読み込まれません。

    それで

    "Modules": [
    		{
    			"Name": "MyPlugin",
    			"Type": "Runtime",
    			"LoadingPhase": "Default",
    			"WhitelistPlatforms": [
    				"Win32",
    				"Win64"
    			]
    		}
    	]

    としたのにShippingでパッケージ化した時にプラグインが読み込まれないことがありました。

    そんな時は、プロジェクト\Plugins\プラグイン名\Binariesを消してみると解決するかもしれません。
    私の場合、BinariesフォルダにUE4-プラグイン名-プラットフォーム-Shipping.lib
    というのが無かったのが原因だったようです。

    FKeyを仮想キーコードに変換する(UnrealC++)

    UE4からキーボードをシミュレートしようとしたときに、FKeyから仮想キーコードにする楽な方法はないかと探していたら見つけました。

    FKeyとはこれのことです。

    FInputKeyManager::GetCodesFromKeyを使えば、UE4で入力したキーからkeybd_eventで使えるように変換することができます。
    日本語キーボードの場合の使い方はこんな感じ

    続きを読む FKeyを仮想キーコードに変換する(UnrealC++)