UE_C++

【UE5】LOGマクロを使いこなしてC++でログを表示する

UEC++では、UE_LOGマクロを用いることでOutputLogにログを出力できます。 UE_LOG(LogTemp, Log, TEXT("Count: %d"), Num); historia.co.jpログ出力系のマクロだとUE_LOGが最もポピュラーだと思いますが、UE5では他にもマクロが用意されているので紹介します…

【UE5】ComponentVisualizerを活用してデータを視覚化

UE5には Component Visualizer という機能(クラス)があります。 Component Visualizerを活用すると、コンポーネントの値を視覚化することができます。視覚化されるUIはランタイムでは描画されずエディタ上で編集時にのみ描画されます。また、その視覚化さ…

【UE5】スプラッシュスクリーンでランダムな画像を表示する

UE5 では Project Settings の各プラットフォームからスプラッシュスクリーン(起動画面)を変更できます。 画像を用意して指定するとこんな感じになります。 プロジェクトに関連する画像が出たりするとテンション上がりますよね! 今回は下記の画像をランダ…

【UE5】ブループリントで定義した変数をC++から上書きする

ブループリントで変数を定義した後にC++側で基底クラスを作ることになった、変数も基底クラス側で定義したい、なんてことが多々あるかと思います。 そんな場合は UPROPERTY 付きの同名の変数を定義するだけで自動で上書きしてくれます。ブループリントを開い…

【UE5】プログレスバーダイアログの実装方法

UEエディタ操作時には画像のようなプログレスバーダイアログが様々な箇所で表示されますが、今回はこのプログレスバーダイアログの実装方法を紹介します。 1.処理するクラスを作成 今回はテスト用に BlueprintFunctionLibrary を継承したC++クラスを作成し…

【UE5】意図的に特定のスレッドをスリープさせる

FPlatformProcess::Sleep を使うことで実行したスレッドを指定した秒数、スリープさせられます。意図的にスリープし、他スレッドの処理や外部の処理を待ちたい場合などに使えるかと思います。 #include "HAL/PlatformProcess.h" bool wait = true; while (wa…

【UE5】エディタでプレイ中か判定する

UWorld の EWorldType を確認すると現在のワールドの状態を取得することができます。ワールドの状態は以下のものがあります。・None ・Game ・Editor ・PIE ・EditorPreview ・GamePreview ・GameRPC ・Inactive この中でも Editor と PIE を使うことで、エ…

【UE5】ブループリント公開の関数を protected 扱いにする

ブループリントで作った関数であれば Access Specifier を Protected にすることで他のクラスからのアクセスを制限できます。 C++でも下のように定義すれば protected 扱いになると思いきや、BP側では他のクラスからもアクセスできてしまいます。 protected:…

【UE5】const関数をPure扱いにしない方法

下のような const関数 の場合、ブループリントグラフ上では Pure 扱いとなります。 UFUNCTION(BlueprintCallable) TArray<AActor*> GetEnemyActors() const; しかし、Pure関数は戻り値が参照される度に評価(実行)されるため、上の画像のケースのような場合だと処理</aactor*>…

【UE5】ポーズ中にカメラを動作させる

ポーズ中にカメラを動かす方法を書いていきます。 いわゆるフォトモードの実装とかの参考になればと思います。 ポーズ中にアクターを動作させる まずはポーズ中に動かしたいアクターの設定をしていきます。 今回はカメラのみ動作させる想定なのでカメラアク…

【UE5】ノードごとにコンパイルオプションを設定する

ブループリントに公開する関数ではメタ指定子で DevelopmentOnly と付けることで Shipping ビルド時にコンパイルから除外することができます。ブループリント上でもわかりやすく、ノードの下部に Development Only と表示されます。 UFUNCTION(BlueprintCall…

【UE5】BP公開の関数のパラメーターを参照だけど入力として扱いたい場合

void AMyActor::AddScore(int32& Score) { Score++; } このような関数を書いた場合、C++では問題なく使えるがBPでは下の画像のように出力ピンとして公開されてしまい、値を渡すことができない。 このような場合は、UPARAM(ref) というメタ指定子を引数につけ…

【UE5】関数、変数に説明を追加する

変数 C++ BP 関数 C++ BP 変数 C++ 変数の上の行にコメントを入れるとノードやアクターの詳細で表示されます。 // スコア UPROPERTY(BlueprintReadWrite, EditAnywhere) int32 Score; もしくはメタ指定子の "Tooltip" で表示することも可能です。 UPROPERTY(…

【UE5】強制的にガベージコレクションを動作させる

Unreal Engine では参照されなくなったオブジェクトを定期的に自動で掃除してくれるガベージコレクション(以下、GC)という機能があります。 ガベージコレクションの詳細は省きます。 docs.unrealengine.com 強制的にガベージコレクションを動作させる BP C…

【UE5】マイナーなコンテナクラスについて

ネイティブの C++ では、std::vector / std::stack / std::queue などがコンテナとして用意されていますが、UEC++ ではそれらをひとまとめにしたような非常に強力なコンテナとして TArray が用意されています。その他にも Blueprint に公開されているメジャ…

【UE4】ハッシュ値でデータを比較

MD5 や SHA といったハッシュ関数を使いデータをハッシュ値に変換することで、より安全性の高いデータのやり取りやデータの比較に使えます。MD5 - Wikipedia Secure Hash Algorithm - Wikipedia 開発者に身近なところでいえば Git のコミットも SHA-1 という…

【UE4】クリップボードから文字列を取得、設定 Copy&Paste

PC、スマホ等で日常的にやっている Copy&Paste をUE4から制御できる機能を紹介します。FPlatformApplicationMisc クラスの ClipboardCopy(), ClipboardPaste() を使うことで可能です。実際にやってみます。 BPには公開されていないのでラッピングした関数を…

【UE4】ハーフフロートの変換

半精度浮動小数点数(ハーフフロート)というものがあります。 よく使われている float(32bit), double(64bit) に対して、16bit で浮動小数点数を表現するものです。 float, double に比べて精度は落ちますが、処理速度の向上やメモリの削減を目的に使用され…

【UE4】iniファイルの読み込み優先度やコンフィグについてあれこれ

コンフィグの概要 独自設定の追加 コンフィグの値を取得 BP C++ コンフィグの値を設定 C++ iniファイルの読み込み優先度 ユーザーごとのローカル設定 プロジェクト間で設定を共有 同じエンジン 同じユーザー コンフィグの概要 UE4エディターでは、Editor Pre…

【UE4】自作した RootComponent の詳細が表示されない場合は UPROPERTY として保持する

C++で以下のようにコンポーネントを生成し、RootComponent に追加すると詳細パネルに何も表示されません。 AMyActor::AMyActor() { RootComponent = CreateDefaultSubobject<UBoxComponent>("BoxComponent"); } このようになった場合は結論から言うと UPROPERTY として保持</uboxcomponent>…

【UE4】PIE外のエディター上でアクターのTickを走らせる

アクターの Tick は基本的にはプレイ(Play In Editor)しないと処理は走りません。アクターの Tick 処理は ExecuteTick という関数で実行されており、以下のようになっている。 void FActorTickFunction::ExecuteTick(float DeltaTime, enum ELevelTick Tic…

【UE4】ポーズ中に描画の更新のみを止める

UE4 のデフォルトのポーズ機能を使うと描画と内部処理の更新が止まります。ですが、コンテンツによっては「画面は止めたいんだけど内部処理はそのまま走らせたい」という場合があると思います。今回はその方法を2つ紹介したいと思います。 どちらの方法でも…

【UE4】BP&C++でログ表示

開発に欠かせないものといえばデバッグ!デバッグの基本といえばログ表示!ということで、UE4におけるログ表示機能を紹介します。UE4では様々な方法でログを出力可能ですが、 "Blueprint"でも、"C++"でも出力できます。出力先は大きく分けて、"OutputLog"に…

【UE4】GlobalUserConfigで独自のプロジェクト設定を追加

エディタを拡張し、Project SettingsやEditor Preferencesに項目を追加することができます。こちらに詳しく書いてあります。 historia.co.jp 作る流れは同じで、C++でクラスを作成していきます。違う点はプロパティを保持するクラスの指定子だけです。 Defau…