『Unreal Engine 4 で極めるゲーム開発』の内容をUnreal Engine 5でラーニングする際のTips【第1章~20章】
はじめに
次の職場でUnreal Engineを使うので、通称『極め本』を使ってラーニングを行う必要があったのだが、「せっかくなら正式リリースされたUnreal Engine 5を使いたいよな~」という軽い思いつきでUnityしか使えなかった筆者が、Unreal知識ほぼ0の状態で『極め本』の内容をなぞるにあたり、UE4とUE5の差によって躓いた箇所をまとめた。
UE5で『極め本』をラーニングするという同じ志をお持ちの方は必要に応じてこのページを検索してほしい。
ちなみに筆者はUnityを使って6年ほど実務を行っていた程度のゲームデザイナーである。
本Tipsではあまりにも相違している箇所の解説や、細かすぎる違いについては解説を行わない。『極め本』の内容を進めるにあたって障害になる箇所に限り解説を行うものとし、書籍側の記載は書籍側を参照していただきたい(この記事は書籍の該当部分と併せて読むことを想定しているため)
また、本Tipsは『Unreal Engine 4 で極めるゲーム開発』の第7版(2021年 2月25日 発行)を参照、および、Unreal Engine 5.0.3を使用することを前提としている。
<第3章>アンリアルエディタのインターフェイス
影響度:小
『P16 <第3章> 3.2節 図3.6 アンリアルエディタ起動直後』
UE5のデフォルトでは書籍の画像と違う画面レイアウトになっているが、メニューバーの[ウィンドウ] ⇒ [レイアウトをロード] ⇒ [UE4 クラシックレイアウト]を選択すれば書籍の通りの画面レイアウトになる
<第6章>ジオメトリの編集
影響度:大
『P69 <第6章> 6.3.6節』
UE5ではデフォルトで[モード]パネルが無いので、筆者も「ジオメトリの編集ってどこでやるの!?」と困惑したが、きちんと存在している
[SlopeBrush]を選択した後、下記画像のプルダウンにある『選択モード』をクリックすると『ブラシ編集』モードに切り替えができるのでまずは切り替えを行う
すると、ビューポートで[SlopeBrush]が青色になり、面と点の選択モードになるので…
編集したい面を選んで
[押し出し]を押して
X軸の矢印をグイッと引っ張る
辺を動かしたい場合は[ブラシ編集]パネル ⇒ [編集]モードに切り替えて、辺をクリックすると辺の位置が編集出来る(ビューポートの座標系をワールドにしておくと良い)
<第7章>スタティックメッシュのインポートオプション
影響度:小
『P81 <第7章> 7.2.3節 手順3.』
[Import as Skeletal]は、UE5では[Skeletal Mesh]のチェックを外せばOK、同じく[Auto Generate Collision]は[Generate Missing Collision]と読み替えてOK(ツールチップ内の表記はUE5でも[Auto Generate Collision]になっているのに…)
『P81 <第7章> 7.2.3節 手順4.』
UE5ではマテリアルおよびテクスチャの周りが更に細かくインポート設定できるようになった影響で、[Import Textures]のチェックが封じられているが…
これはマテリアルをインポートしないし、新規作成もしないという設定にすれば良いため、[Search Location]を[Do Not Search]、[Material Import Method]を[Do Not Create Material]とすれば、[Import Textures]のチェックも編集可能になる
<第11章>初めてのブループリントスクリプト
影響度:小
『P171 <第11章> 11.2.1節 手順3.』
書籍には下記の記述があるが…
ボタンにキャプションが付いていたUE4ならいざ知らず、広大なUE5のレベルエディタのどこに該当のボタンがあるか分かるだろうか?
正解はココである
ココに[レベルブループリントを開く]ボタンがあるので、晴れてレベルブループリントを開くことが出来る
<第11章>マップ上のアクタをクラスブループリント化する
影響度:中
『P178 <第11章> 11.3.1節 手順3. ~』
UE5では[ブループリント/スクリプトを追加]ボタンは無いため、[選択からブループリントを作成]を使うことになる
[詳細]パネルの下記画像のボタンを押下し…
[選択からブループリントを作成]ダイアログが開いたら、[新しいサブクラス]を選択、親クラスは[StaticMeshActor]で問題ないので、ブループリント名とパスを書籍の通りに設定し、[選択]を押せばOK
今後「[ブループリント/スクリプトを追加]から~」という箇所が出てきた際は、上記の方法でクラスブループリントを作成することになる
親クラスの選択に迷ったら、Actorクラスの派生クラスなどを選択しておけば問題ない
<第12章>入力イベント
影響度:小
『P188 <第12章> 12.1.1節 図12.2 デジタル入力のキー入力イベント』
ここで『O』キーのデジタル入力を取得するノードの説明がされているが、UE5ではキーボードのデジタル入力を取得するノードの出し方が変わっているため、『P277 <第17章> 17.2.3節 カスタムイベントを呼び出す 手順4.』等で解説されているように、「[入力] ⇒ [キーイベント] ⇒ [O]を選択して…」というところで少し躓きがある
UE5での該当ノードの出し方は、[インプット] ⇒ [キーボードイベント] ⇒ [O]なので、この後、書籍を読み進めるにあたってキーボードの入力ノードを求められた場合にはこの手順でノードを配置すると良い
<第17章>独自のイベントディスパッチャーを利用する
影響度:大
『P281 <第17章> 17.3.2節 手順2. ~』
UE5でここを進めようとすると、マップ上の[PNSwitchActor]を右クリックしても、アウトライナーの[PNSwitchActor]を右クリックしても、[イベントを追加]が表示されない
UE5では、レベルブループリントにイベントを追加したい場合、右クリックではなくメニューバーの[アクタ]から行う必要があるため、下記の手順を取る
[PNSwitchActor]を選択した状態で、[アクタ] ⇒ [イベントを追加] ⇒ [OnTurnedOn]を選択すれば、レベルブループリントにイベントが追加される
<第18章>イベントをイベントにバインドする
影響度:大
『P301 <第18章> 18.3.3節 手順5.』
手順の通り、[RespawnPlayer]ノードのデリゲートから[OnDestroyed]バインドノードのイベント入力ピンに接続しようとしても、「デリゲート は デリゲート(リファレンス渡し)と互換性がありません。」と表示されて繋げず、エラーになる
専門分野から外れるため、詳細な説明は各自で調べて頂きたいが、BPでのデリゲートをとても簡単に説明してしまうと、該当イベントの実行権限を他のイベントに一任してしまおうということである(誤っていたらご指摘ください)
このため、バインド先のイベントと同じピンが設定されていないと、ピンの数が合わずにイベントを実行できない(実行時に指定されていないピンの値を何にすれば良いかコンパイラは解釈できないから?)ため、エラーになってしまう
詳しくは下記の記事を参照してほしい
試しに、[OnDestroyed]バインドノードの[イベント]入力ピンからノードを伸ばし、カスタムイベントを作成してみると、[DestroyedActor]入力ピンが設定済みのカスタムイベントが作成される(これが[OnDestroyed]バインドノードが欲しがっているカスタムイベントの正しい形)
よって、この問題は[RespawnPlayer]ノードに[DestroyedActor]という名前の[Actor]型入力ピンを設定することで解決できる
まずは下記画像の通りに[RespawnPlayer]ノードに入力ピンを設定する
一旦、ここで[コンパイル]を行う
すると、[OnDestroyed]バインドノードの[イベント]入力ピンに[RespawnPlayer]ノードのデリゲートが接続できるようになっている([DestroyedActor]の先には何も付けなくてOK)
<第20章>乗ると落ちる床を作る
影響度:中
『P341 <第20章> 20.3.1節 手順2.』
第7章で[PaperNinja_Resource] ⇒ [Archetecture] ⇒ [Meshes]の中にある.fbxをインポートした際に違和感を感じた箇所があったのだが、ここで具体的な問題として発覚した
[SM_IronFloor.fbx]のメッシュが分割されてインポートされてしまっていたのである
調査を行ったところ、下記の記事に答えが載っていた
この問題の解決方法は以下の通り
分割インポートされた[SM_IronFloor]スタティックメッシュを一度削除
再度、[SM_IronFloor.fbx]をコンテンツブラウザにドラッグ&ドロップなど行い、[FBXインポートオプション]を表示
[FBXインポートオプション]にて、[Combine Meches]にチェックを入れる
1つのスタティックメッシュとしてインポートされる
次の記事は下記