ブログについて

このブログはUnrealEngineに関する事柄をプランナー視点で気ままに書いていくものです。
※最近C++もほんのわずかに勉強しているので、もしかしたらC++系記事を書くかも。
管理人はゲームプランナーっぽい仕事をしています。
ブログについての質問、その他仕事の相談等は以下まで。
Mail1:kinnajiblog@kinnaji.com
Twitter:@kinnaji_blog

記事のレベル

このブログの記事にはそれぞれレベルが付いています。ここで言うレベルは、ブログのターゲット読者のレベルを可視化したもので、専門知識(UE、その他ゲームエンジンや、プログラム、アート)の熟練度の比喩です。

レベルは☆→★→★☆と増えていき、Maxは★★★★★です。レベルが★★★☆以上の方がこのサイトに来ても得られるものがあるかどうかわかりません。(ちなみに、このサイトで★★★☆以上を取り上げることはほとんどないでしょう。カケマセン)

参考程度に難易度に対応したターゲットは以下になります。

~★        :UEを触ったことない、ぷろぐらむ? あーと? おいしい?
★☆~★★      :UEを触ったことある! 簡単なチュートリアルでゲーム作ったよ!
★★☆~★★★    :UEの大抵の機能は触ったことアルし。業務でもつかってっからオラ。
★★★☆~★★★★  :C++でUEプロジェクト触ってるお。ワイプログラマーやし。シェーダーとかお湯ですね。
★★★★☆~★★★★★:UnrealEngine……? ごめんなさい、ボクのはウンレアェンギネって言って、Engine改造して原型無いんです。あ、UDNバッチ持ってますけどなにか?



    記事一覧

    2019年10月22日
    【UE4】PrintStringノードについて 【★】
    サンプルプロジェクト

    2019年10月21日
    【UE4】お手軽白黒ドット表現 【★☆】
    サンプルプロジェクト

    2019年10月15日
    【UE4】メモ:実はEditor Utility WidgetはBlutilityの完全上位互換だった話【★★】
    サンプルプロジェクト

    2019年10月09日
    【UE4】4.23でなくなった「Blutility」の拡張ウィンドウを使いたい場合【★】
    サンプルプロジェクト

    2019年10月1日
    【UE4】【Python】BlueprintClassのデフォルトの変数値を一括変更する【★★★】
    サンプルプロジェクト

    2019年9月18日
    【UE4】Materialでいろんな幾何学模様模様を作ってみよう【★~★★】
    サンプルプロジェクト

    2019年9月8日
    【UE4】Web Remote Controlを試してみる【★★】
    サンプルプロジェクト

    2019年8月29日
    【UE4】【C++】独自の簡単なスクリプトシステムを作る-前編 【★★★☆】
    【UE4】【C++】独自の簡単なスクリプトシステムを作る-後編 【★★★☆】
    サンプルプロジェクト

    2019年8月25日
    【UE4】順位によって更新されるUIを作ってみる 【★★】
    サンプルプロジェクト

    2019年8月19日
    【UE4】ObjectのRotationをMaterialから取得する方法 【★★☆】
    サンプルプロジェクト

    2019年8月8日
    【UE4】Textureを使わずに水滴表現を作ってみる 【★★★】
    サンプルプロジェクト

    2019年7月4日(Twitter非公開)
    【UE4】【C++】メモ:EditorUtilityWidgetをBlueprintから実行する方法 【★★★☆】

    2019年6月28日
    【UE4】Materialで模様作りー万華鏡っぽいのを作るー 【★★☆】
    サンプルプロジェクト

    2019年5月16日
    【UE4】Pythonつかって、MaterialInstanceアセットのパラメーターとかいじってみた-前編 【★★~★★★】
    【UE4】Pythonつかって、MaterialInstanceアセットのパラメーターとかいじってみた-後編 【★★~★★★】
    サンプルプロジェクト

    2019年4月23日
    【UE4】Editor内の便利なコピーとペーストについて 【★】

    2019年4月17
    【UE4】オーディオプレイヤーを作ってみる~With EditorUtilityWidgets~ 【★★☆】
    サンプルプロジェクト

    2019年4月16日
    【UE4】第11回ぷちコン備忘録~企画から完成までの道のり~
    実行ファイル

    2019年3月27日
    【UE4】簡単な電卓を作ってみる~EditorUtilityWidgetを用いて~ 【★★★】
    サンプルプロジェクト

    2019年3月13日
    【UE4】既存のテクスチャでマトリックスみたいなマテリアルを作る 【★★☆】
    サンプルプロジェクト

    2019年3月07日
    【UE4】第11回ぷちコン応募作品「みちびかれしえんたち」
    実行ファイル

    2019年2月13日
    【UE4】Editor Utility Widgetsで監視カメラを作る 【★☆~★★☆】
    サンプルプロジェクト

    2019年1月24日
    【UE4】コンテンツブラウザの高度な検索【★】
    サンプルプロジェクト

    2019年1月14日
    【UE4】マテリアルで関数グラフっぽいのを書いてみよう 【★★☆】
    サンプルプロジェクト

    2019年1月8日
    【UE4】複数のポストプロセスを使い分ける 【★★】
    サンプルプロジェクト

    2018年12月25日
    【UE4】手軽に独自のデータアセットを作成する 【★★】
    サンプルプロジェクト

    2018年12月21日
    【UE4】ポストプロセスマテリアルで画面をいろいろいじる-前編 【★★】
    【UE4】ポストプロセスマテリアルで画面をいろいろいじる-後編 【★★☆】
    サンプルプロジェクト

    2018年12月19日
    【UE4】Spriteで簡単に残像を作る方法 【★★】
    サンプルプロジェクト

    2018年12月17日
    【UE4】ForEachLoopを段階的に出力するマクロ 【★★】 
    サンプルプロジェクト

    2018年12月15日
    【UE4】InterfaceとDispatcherの使い分け方-自分流【★★☆】 
    サンプルプロジェクト

    2018年12月14日
    【UE4】自動でマップの高解像度キャプチャーを生成し出力する-後編 【★★★】
    【UE4】自動でマップの高解像度キャプチャーを生成し出力する-前編 【★~★★】
    サンプルプロジェクト

    2018年12月13日
    【UE4】Geometry Brushでマップの仮組みを 【★~★☆】 
    サンプルプロジェクト

    2018年12月12日
    【UE4】Object型BPで開発をスムーズに-後編 【★★★】 
    【UE4】Object型BPで開発をスムーズに-前編 【★★★】 
    サンプルプロジェクト

    2018年12月10日
    【UE4】ポストプロセスマテリアルで簡単なセルシェーディングやってみた 【★★★】 
    サンプルプロジェクト

    2018年12月7日
    【UE4】DataTableの使い方-その② ~エクセルさようなら~ 【★★~★★★】
    サンプルプロジェクト

    2018年12月6日
    【UE4】HPバーをマテリアルで-後編 【★★★】 
    【UE4】HPバーをマテリアルで-前編 【★★~★★★】 
    サンプルプロジェクト

    2018年12月5日
    【UE4】Delayノードについての検証 【★★~★★★】 
    サンプルプロジェクト

    2018年12月4日
    【UE4】DataTableの使い方-その① ~基本編~【★~★★】 
    サンプルプロジェクト

    ・小ネタ集(随時更新)
    【UE4】小ネタをメモする場所-その①

    サンプルプロジェクトについて

    ほぼすべての記事には、記事で使用したプロジェクトデータをダウンロード可能なURLが張られています。

    記事だけではわかりずらい、画像が見ずらいなどの際に、ご自身のPCにてダウンロードしていただき参考にしていただければと思います。

    また、URLを押した際に以下のような画面になってしまうかと思いますが、
    気にせずに「ダウンロード」を押してください。
    (ネット上でプレビューができない節のエラーです)

    ダウンロードファイルはすべてzipファイルになっておりますので、
    ご自身のPCにて解凍を行って使用してください。

    ダウンロードしたファイルがPCに及ぼす影響は、いかなるものでも責任を負いかねますので、あらかじめご了承ください。

    【UE4】PrintStringノードについて 【★】

    ※この記事で使用しているUnrealのVersionは04.23.0です。

    ※この記事のサンプルプロジェクトは以下URLにアップされています。
    サンプルプロジェクト

    今回はすべてLevel Blueprintの中でのお話になります。

    Unrealを起動しながらのご覧の際は、各自のPersistent LevelのLevel Blueprintを開いておきましょう。

    Level Blueprintの開き方は、エディター内の「Tool bar」ウィンドウ内にある「Blueprints」を選択し、「Open Level Blueprint」を押してください。

    すると、以下のようなウィンドウが開きます。

    ここまでで準備OKです。

    PrintStringの使い方あれこれ レベル【★】

    みなさん、Unreal EngineでBlueprintを学ぶ際に誰しもがお世話になったノードが「Print String」ノードだと思います。

    Print Stringノードは、画面上や「Output Log」ウィンドウに指定した文字列を表示してくれます。

    ↓Event BeginplayにPrintStringノードを接続して、Play Inを押した場合。

    ↓画面上

    ↓Output Log上

    ※Output Logの表示の仕方は、エディター左上の「Window」から「Developer Tools」→「Output Log」を選択することで表示できます。

    Print Stringノードには、いくつかの引数(設定項目)があります。
    (ノード下の▽を押すことで詳細な設定を行えます)

    Print to Screen:画面上に文字を表示するか。
    Print to Log:Output Log上に書き出すか。
    Text Color:画面上に表示する際の文字の色。
    Duration:画面上に表示する際の表示時間。

    Print Stringは、Durationの秒数以内に再びPrint Stringノードが呼び出された際は、古いPrint Stringはどんどん下に追いやられてしまいます。

    https://kinnaji.com/wp-content/uploads/2019/10/AGDRec-3.mp4

    なので、あまり大量に仕込むと画面で確認したいことが確認できないので気を付けましょう(Levelの読み込みとかでブワァーっとログが表示されるプロジェクトがよくあります)

    ちなみに、Durationを「0.0」にして、Event Tickなどで毎フレーム呼び出すと、常にログを表示し続けてくれます。

    https://kinnaji.com/wp-content/uploads/2019/10/AGDRec-4.mp4

    ※その際「Print to Log」にチェックが入っていると、Output LogやLogファイルに文字がブワァーっと羅列されてしまうので気を付けましょう。
    ※また、Blueprintでの毎フレーム処理はそもそも重いので、ご利用はご計画的に。

    Print Stringを使う例として、変数などの中身を表示するというものがあります。

    Unrealでは、UnrealのPrimitive型(基本となる型、boolean,Integerなど)のほとんどは簡単に文字列に変換できます。

    つなげたい変数などのピンをPrint Stringの「In String」部分にドラッグ&ドロップしてあげるだけです。

    https://kinnaji.com/wp-content/uploads/2019/10/AGDRec-5.mp4

    Integer64以外のPrimitive型はこの方法で変換できます。
    (Integer64だけは、直接String型への変換はありませんでした。To Textでテキストに変換後Stringという方法が今のところできる処理となっています)

    ↓デフォルト値をそのままStringに変換した際の文字

    Boolean:false
    Byte:0
    Integer:0
    Integer640
    Float:0.0
    Name:None
    String:
    Text:
    Vector:X=0.000 Y=0.000 Z=0.000
    Rotator:P=0.000000 Y=0.000000 R=0.000000
    Transform:Translation: X=0.000 Y=0.000 Z=0.000 Rotation: P=0.000000 Y=0.000000 R=0.000000 Scale X=1.000 Y=1.000 Z=1.000

    また、すべてのObject系「Actorなど」は以下のように変換できます。

    ・Object Reference→「Display Name」または「Object Name」という関数で、オブジェクトの名前を取得できます。
    ※どちらも似ていますが、DisplayNameはパッケージなどだと変化してしまう恐れがあるので、基本的にはObject Nameを使うことをお勧めします。
    ・Class Reference→「Display Name」でClassの名前を取得することができます。
    ・Soft Object Reference→To StringノードでStringに変換できます(Stringピンにドラッグ&ドロップしても、勝手につなげてくれないので、自分でContent Finderから検索して出現させます)
    ・Soft Object Reference→To StringノードでStringに変換できます(同じくドラッグ&ドロップではつなげてくれないので自分で出現させます)

    また、すべてのEnum(列挙体)は、Stringピンにドラッグ&ドロップで、Stringに変換できます。

    また、Structure(構造体)は、基本的にはそのままでは変換できませんが、一部変換できるものもあるようです(Vector2Dなど)

    尚、Interface系のノードは、Stringへの変換はできないようです。

    オンラインゲームなど用に使う複数人プレイ時にPrint Stringノードを使った場合は、
    その処理がServer側とClient側のどちらで行われたのかが、自動的にStringに追加されます。(Client:やServer:という文字が頭に追加される)

    ※手軽に複数人プレイの確認をしたい際は、「Toolbar」内の「Play」の右側にある▽から「Number of Players」という部分の数字を増やしてください。
    その状態でプレイすると、複数窓が出現しエディター上で複数人プレイできます。

    ここまでザーッとPrint String(やString変換について)を説明しましたが、LogをOutput Logウィンドウに出力して確認するときに他のログが邪魔で見えづらいなんてことはありますよね。

    Print Stringノードは、Output Logに出力する際には必ずどのオブジェクトから出力されたのかが「[]」内に表示されていますので、Objectの名前がわかっている場合は、Output Logウィンドウ上部の検索ボックスでObject名を指定して検索をかけると便利です。

    また、Print Stringノードは、文字の頭に「Warning:」「Error:」とつけることで、そのログの種類が変化して、Output Log上に表示される色も変化します。

    「Warning:Hello」と設定した場合には黄色に、「Error:Hello」と設定した場合には赤になりました。

    これで、ログを探す際に少しは見つけやすくなると思います。

    ※WarningやErrorをつけても、Output Logウィンドウの「Filter」機能ではソートできないので気を付けてください。

    ざっと説明しましたが、以上となります。

    皆さん良いBlueprintライフを。

    ※この記事のサンプルプロジェクトは以下URLにアップされています。
    サンプルプロジェクト