今回は Market Place で無料で手に入れることができる「LE Extended Standard Library」プラグイン(以下、LEプラグイン)について紹介します。
LE Extended Standard Library:コードプラグイン - UE マーケットプレイス
LEプラグインを入れると標準機能を拡張したかなり多くの便利機能をBP上で使用することができます。
C++でしか使えなかった機能や複数機能を組み合わせてラップしたノードなどが追加され、かゆいところに手が届かなかった部分などが改善されます!
数は多いですが1つ1つ紹介していきたいと思います。
- #IFDEF 分岐
- モバイルデバイスの情報取得
- オブジェクトの生成
- チームIDの取得/設定
- サウンドクラスの音量、ピッチ操作
- Latent Action
- Base64 変換
- Bit, Byte 操作
- ピクセル変換
- 動画メディアの読み込み
- テクスチャ更新処理
- SceneCapture2D の FOV 操作
- ハッシュ関数操作
- 文字列操作の拡張
- 別型同士の比較
- 任意の小数点で四捨五入、切り上げ、切り捨て
- 配列内の最大最小値取得
- DateTime 変換
- 配列のソート
- Frame 指定の Delay
- 正規表現
- クラッシュ
- 任意の回数分実行できるノード
- マウス位置操作
- モニターの解像度取得
- ウィンドウ情報の取得
- スプリットスクリーンの操作
- ワールドレンダリングの操作
- クリップボードの操作
- クラスの検索
#IFDEF 分岐
C++ では「#if マクロ名」とすることで処理を分けられますが、BP ではそのような機能はありません。
LEライブラリでは C++ で分岐処理した関数を BP に公開してくれています。
ちなみに中身は全てこんな形でとても単純です。
・ビルド設定
この関数は標準で欲しい。。プロジェクト毎に用意している方も多いんではないでしょうか。
・プラットフォーム設定
モバイルデバイスの情報取得
バッテリー状態、バッテリー残量、バッテリー温度の取得
※ 現状 Android でのみ動作
音量、ヘッドホンの接続有無の取得
※ 現状 Android でのみ動作
Androidの機器情報取得(メーカー、バージョン、コア数、言語など)
オブジェクトの生成
チームIDの取得/設定
チームIDは AI を作成する際に使用します。
Latent Action
BP で他の処理よりも遅らせるには Delayノードのような Latentノードを使う方法があります。
(ノードの右上に時計マークが書いてあるノードです)
LEプラグインでは上記の方法に加えて、Latent Action というノードが提供されています。
CreateLatentActionノードで Latent Action Object を生成し、任意のタイミングでアクションを完了(Done)させられます。
下の例ではノードの実行順では WaitTillDone ノードが Done ノードよりも先に実行されますが、PrintString ノードが実行されるのは1秒後です。
このように処理のタイミングをズラすことができます。(扱いには注意)
Base64 変換
Base64 とは64進数を用いて、マルチバイト文字やバイナリファイルを扱うためのエンコード方式です。
LEプラグインでは Base64 から Byte, Base64URL へのエンコード、デコードが可能です。
Bit, Byte 操作
Bit, Byte 操作はプログラマー以外はほぼ触らない機能だと思うので BP にもあまり公開されていない部分ではありますが、LEプラグインではBP上で多くの機能が使えます。
int, float, long, double, string, 16進数 などからの変換ができ、読み込み用、書き込み用のクラスが用意されています。
特にテクスチャからの変換、テクスチャへの変換機能が便利で読み込んだ画像の生データをノード1つでテクスチャに変換できます。
テクスチャからの変換は UTexture2D や USceneCapture2D など複数のクラス専用のノードが用意されています。
動画メディアの読み込み
UE4 に用意されている MediaSoundComponent と LEプラグインで提供されている LoadVideo ノードを使うことで動画メディアの読み込み、再生が可能です。
使用方法はこちらにスクショでまとめられています。
https://public.lowentry.com/#files/LowEntryUE4/ue4/images/tutorials/load_video/
LoadVideo ノードの URL には HTTP/HTTPS もしくは「file://」で始まる動画ファイルへの絶対パス/相対パスを指定する必要があります。
また、テスト用の動画が以下に公開されています。
http://public.lowentry.com/files/test_data/TestVideoMp4.mp4
SceneCapture2D の FOV 操作
ASceneCapture2D と USceneCaptureComponent2D に対して FOV の操作ができます。
ハッシュ関数操作
ハッシュ関数の生成、ハッシュキャッシュができます。
以下の種類のハッシュ関数に対応しています。SHA-1 が代表的で Git の各コミットの識別にも使用されています。
Pearson, MD5, SHA-1, SHA-256, SHA-512, bcrypt, HMAC
文字列操作の拡張
・特殊文字
文章中の改行やタブに使われる「\n」や「\t」といった特殊文字を取得できます。
・文字列の比較
・任意の文字を残したまま削除と置換
Keep Lowercase AZ : 小文字のアルファベットを残す
Keep Uppercase AZ : 大文字のアルファベットを残す
Keep Numbers : 数字を残す
Other Characters to Keep : 任意の文字を残す(1文字ずつ判定されます)
別型同士の比較
Int と Float など型が違うもの同士を比較できます。
配列内の最大最小値取得
String, DateTime, Timespan 型の配列の最大値、最小値の取得ができます。
Int や Float は標準の関数で取得できます。
DateTime 変換
UE4標準の FDateTime を、
「ISO-8601, String, Unix, ローカル時刻」への変換、もしくは
「Unix, ローカル時刻」からの変換ができます。(DateTime は UTC)
配列のソート
様々な型の配列のソートができます。また、配列のパラメータが参照型の関数も用意されていて便利です。
Frame 指定の Delay
標準の関数では秒指定のみですが、フレーム指定で処理を遅らせられます。
クラッシュ
任意のタイミングでエディタをクラッシュさせます。(Assert)
任意の回数分実行できるノード
LEプラグインで提供されている Tick ノードを実行すると Ticks 分 Completed が実行されます。
また、Interval を指定すると指定した分間隔を空けて Completed が実行されます。(Frame or 秒指定)
マウス位置操作
マウス位置の取得、設定、ビューポート上にロックすることができます。
モニターの解像度取得
モニター全体、作業エリア(タスクバーなど除いた範囲)の解像度を取得できます。
ウィンドウ情報の取得
実行中のウィンドウの位置やサイズなどを取得、設定できます。
ワールドレンダリングの操作
ワールドレンダリングの有無の取得、設定ができます。4.22時点では標準機能で同様の関数があります。
また、ワールドレンダリングについては過去の記事でも触れています。
shuntaendo.hatenablog.com
クラスの検索
以下のような「/Game」で始まり「_C」で終わるパスを指定するとクラスを取得できます。
/Game/Blueprints/PlayerController.PlayerController_C
思ったより長くなりましたが以上になります!
機能はかなり多く把握するのが大変ですが、とても汎用性が高く便利なプラグインなので活用していきましょう~!