Unreal Engine 4 UE4学習 3日目

UE4

はじめに

  • なにか目的を持って作りたい為UE4を始める
  • UE4一ヶ月でどれくらいのレベルになるのか検証

本日はその3日目。今日は前回同様に上の方に配置されているチュートリアルという事で、プログラミングクイックスタートをやっていきます。

プログラミングってかなり尻込みするけど、内部仕様の理解には一番役に立つような気がします。

あとプログラミングはできないわけではないため、プログラミングによるゲーム作成の難易度も知りたい。

それでは開始します。

参照元

docs.unrealengine.com

と思ったら開始位置にまだ見ていないセクションのリンクがある

  • UE起動時に下のペインに表示されているコンテンツブラウザに関する説明
  • VisualStudioのセットアップ

とあるので、やってきます。

コンテンツブラウザ

docs.unrealengine.com

番号名前
1ナビゲーションバー
2ソースビュー
3コレクションパネル
4アセット管理領域
5アセットビュー

ナビゲーションバー

  • ソースビューの表示/非表示
  • アセットフォルダ間の移動

が可能とのこと。

見ていたフォルダは戻るボタンを押せば直近のファイルパスを表示。

これは便利。

ソースパネル

  • ゲームプロジェクト内のすべてのフォルダとコレクションがある
    • コレクションという言葉は初めて見たような気がする。UEでは何を意味するんだろう?

階層を下にスクロールするにはマウスホイールを使うか、マウスの右クリックをドラッグとのこと

更に詳細なリンクが有る。こちらはフォルダの役割なども解説している模様。

アセット管理領域

アセットビュー

  • コンテンツブラウザUIの主要領域
  • フィルターと検索が適用されると、フォルダ内で利用可能な全てのアセットのグリッドまたはリストが表示される
  • アセットは早く展開するためにシーンにドラッグ/ドロップ可能
  • アセットビュー内で右クリックから新規にアセットを作成する事も可能
  • アセットのリストはスクロールバー、マウスホイール、右クリックドラッグでスクロールする
表示スタイル

アセットビューのアセットは、タイル、リスト、カラムの3つのスタイルで表示可能とのこと

Unreal Engine 用に Visual Studio をセットアップする

docs.unrealengine.com

  • UEはVisual Studioとスムーズに統合するように設計されている
  • プロジェクトのコードを素早く簡単に変更してコンパイル後するに結果が確認できる
  • 連携するとUEを使用する開発者の効率と全体的なユーザーエクスペリエンスが向上する

インストール

visualstudio.microsoft.com

インストールが完了

デベロッパー向けの推奨設定があるとのこと

まだ何かをつくるわけではないのでコードなしで起動する

推奨設定

Solution Platforms ドロップダウンを追加する

  1. カスタマイズを開く
  2. 標準を選択
  3. ソリューション構成を選択後、選択したボタンの編集
  4. 幅を200にしてOK
  5. 閉じる
  6. ソリューション構成をツールバーに追加

    • UE公式には追加手順が記載してあるが最初から表示されている

Error リストウィンドウをオフにする

  • コード中にエラーがあると Error List ウィンドウが自動的にポップアップする
    • この設定の場合UEで誤った場合にもポップアップする事がある
    • UEで作業中はこの設定をオフにする
    • エラーはOutputウィンドウでエラーを確認する事を推奨
  • オプションダイアログを開く
  • ビルド完了時にエラー一覧を表示のチェックを外してOK

その他

  • アクティブでないブロックの表示をFalseにする
  • 外部依存関係フォルダーの無効化をTrue

あと2つほど設定変更項目があったが、目的の記載が無いため行わないことに。

Visual Assist Xユーザー向け

なんのことだか不明ですが、インストールしていない(していてもわかっていない)のでスキップする事に

Intellisense、ライブ エラー、波線
  • Intellisenseはエディターに表示されるポップアップエラーだったりエラー箇所に波線が書かれたりする機能の事を指す模様
  • IntelliSenseは入力時にC++を再コンパイルする
    • コードの行をすべて検証する完全なC++コンパイラが使われる
    • VAXの構文チェックよりも遥かに強力
    • ワークフローを劇的に高速化

これはやらなければ

翻訳単位の最大キャッシュは15に設定するとあるが、おそらく当時はなかったであろう翻訳単位の最大キャッシュの自動調整機能が追加されているため、その機能を使うことにしました。

UnrealVS 拡張

docs.unrealengine.com

  1. 対応するVSバージョンの UnrealVS.vsix を実行する
    自分の環境(Windows10)では C:Program FilesEpic GamesUE_4.25EngineExtrasUnrealVSVS2019 に保存されていたため実行
  2. 続けてOK (何故か(2)となっているのが気になるがそのままにしておく)
デバッグ

UE4 Visualizer for Visual Studio 2013 をインストールする

やり方が書いていないのでスキップ

プログラミングクイックスタートガイド

  • C++でプロジェクトを構成し、Visual Studioで最初のC++ゲームプレイクラスをプログラミングする方法の解説
  • このチュートリアルでできるようになること
    • 新規 C++ プロジェクトを作成する
    • C++ で新規アクタ クラスを作成する
    • その C++ クラスを開発環境で編集して視覚的表現と機能を追加する
    • プロジェクトをコンパイルする
    • Unreal Editor で新規アクタをテストする

プロジェクト作成

  • Game
  • Blank
  • プロジェクト構成
    • C++
    • スターターコンテンツ有効

C++クラス作成

  1. 新規C++クラスをクリック
  2. 親クラスは Actorを選択
  3. 名前をFloatingActorにして作成
  4. このような画面が表示される

このまま起動せず。タイトルになんて書いてあるのか調べる

superuser.com

を参考に

tasklist /fi "imagename eq cmd.exe" /fo list /v

を実行。下記タイトルが得られた。

C:WINDOWSsystem32cmd.exe /k " cd /d "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsCommon7Tools...." & "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsCommon7Toolsvsdevcmd.bat"

上記をもとに検索するも有力な情報は得られず。一度VisualStudioをアンインストールしてやり直すことに。

再インストール後やってみるとうまくいく。原因がわからなかったができたのでこれ以上深堀りはしないことに。

ヘッダー修正

  1. ソリューションエクスプローラーを開く
  2. FloatingActor.hを探し開く

    • これはヘッダーファイル
      • 変数や関数をここで宣言する
  3. コードを追加

    • オブジェクトの視覚的表現として動作する StaticMeshComponentを宣言しているとのこと
    • Unreal Editor内で表示するためにUPropertyマクロを使用しているとの事

CPPファイル修正

  1. FloatingActor.cppを開く
AFloatingActor修正
AFloatingActor::AFloatingActor()
{
// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
VisualMesh->SetupAttachment(RootComponent);
static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));
if (CubeVisualAsset.Succeeded())
{
VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
}
}
  • この関数(AFloatingActor)はコンストラク
  • ここで行っていること
    • VisualMesh参照に新しいStaticMeshComponentを挿入
    • アクタにこのコンポーネントをアタッチ
    • StarterContentアセットのキューブメッシュに設定
  • コードでコンポーネントをアタッチする方法の詳細。リンク
Tick修正
// Called every frame
void AFloatingActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FVector NewLocation = GetActorLocation();
FRotator NewRotation = GetActorRotation();
float RunningTime = GetGameTimeSinceCreation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
float DeltaRotation = DeltaTime * 20.0f;    //Rotate by 20 degrees per second
NewRotation.Yaw += DeltaRotation;
SetActorLocationAndRotation(NewLocation, NewRotation);
}
  • Tick関数にはリアルタイムに実行したいコードを追加する
  • このコードではキューブが上下に浮遊しながら回転する
  • Tickの詳細アクタのティック
コンパイル
  1. ヘッダーもCPPファイルも保存する(アスタリスクがついてない状態にする)
  2. ソリューションエクスプローラーからプロジェクトを右クリック→ビルド


結果

または UE4からでもビルドは可能とのこと

UE4 コンテンツブラウザからFloatingActorを見つけレベルにドラッグする
  1. コンテンツブラウザのソースパネルを開きC++クラスの中からFloatingActorを見つける
  2. ドラッグする
  3. 位置を設定する
  4. Playボタンを押す

結果

最後に

かなり躓いたけどなんとか完了しました。

スタティックメッシュを作成し動かすだけでも結構な手間ですね。

ブログを書く方法も進化してきた。模索中だけど変化を楽しもう

メモ

  • コレクションって何?
  • ソースパネルで階層を下にスクロールするにはマウスホイールを使うか、マウスの右クリックをドラッグ
  • ソースパネルで検索する際に-を先頭につけると除外(NOT検索)できる
  • アセット管理領域ではCRUDのうち CRUを担う
  • VSのソリューションの構成って何?
  • Visual Studio のIntellisenseというのはエディターに表示されるポップアップエラーだったりエラー箇所に波線が書かれたりする機能の事を指す模様
  • クラス名の先頭にはAが付与される模様
タイトルとURLをコピーしました