39. ブループリントクラス(継承とインスタンス化)

目的

Unreal Engineのブループリントには,レベルブループリントとブループリントクラスがある.ブループリントクラスは既にあるクラスを継承し,新しい機能を追加するものであり,作成したブループリントクラスからインスタンス(実体)を複数生成することができる.ここではブループリントクラスについて学ぶ.

説明

ここでは,既にある球のクラスを拡張し,ゲームを開始すると上下に動き続ける球のクラスを作成するという例を通し,ブループリントクラスの使い方を説明する.

ブループリントクラスを作る

球のクラスを拡張したブループリントクラスを作るには,以下のようにすればよい.

  • 球を作り,選択する.
  • 詳細パネルの「ブループリント/スクリプトを追加」をクリックする.
  • ブループリントクラスを作成するウィンドウが表示される.
  • ブループリントクラスを作成する場所(ここでは「コンテンツ」とする)を選択し,ブループリント名(ここでは「Sphere_Blueprint」を入力し,「ブループリントを作成」をクリックする.
  • ブループリントエディタが開く.

ブループリントエディタのインタフェース

ブループリントエディタでは,既にある球のクラスを継承した上で拡張する機能を記述する.ブループリントエディタのインタフェースは以下の通りである.

  • 中央の領域
    • ビューポートタブ:見た目を確認する.
    • Construction Scriptタブ:初期化スクリプトを記述する.
    • イベントグラフタブ:処理を記述する.
  • 左上の領域
    • コンポーネントパネル
  • 左下の領域
    • マイブループリントパネル
  • 右の領域
    • 詳細パネル

機能を拡張する

ここでは球クラスの機能を全て継承した上で,新たに「ゲームをプレイすると球が上下に動き続ける」機能を追加する.

  • ブループリントエディタを開く.
  • イベントグラフタブで,「ゲームをプレイすると,球が上下に動き続ける」ようにイベントグラフを作る.
  • ツールバーの「コンパイル」をクリックする.
  • ツールバーの「保存」をクリックする.
  • ブループリントエディタを閉じる.
  • ツールバーの「プレイ」をクリックする.
  • 球が上下に動く.

イベントグラフは以下のようになる.GetActorLocationやSetActorLocationのターゲットが「self」となる以外はこれまでに学んだ通りである.

複数のインスタンスを作る

球を作るには,配置モードから「スフィア」をビューポートにドラッグアンドドロップすればよかった.ブループリントクラスも同様に,コンテンツブラウザから「Sphere_Blueprint」をビューポートにドラッグアンドドロップすれば,「ゲームをプレイすると上下に動き続ける球」のインスタンス(実体)を複数作ることができる.

ブループリントクラスを作る別の方法

上記の方法では,球を作ってから球のクラスを拡張したブループリントクラスを作った.別の方法として,スタティックメッシュアクタを拡張したブループリントクラスを作り,アクタの見た目を球にするという方法もある.

  • コンテンツブラウザで「コンテンツ」を表示する.
  • 「新規追加」をクリックする.
  • 「ブループリントクラス」を選択する.
  • 親クラスを選択するウィンドウが表示される.
  • 「すべてのクラス」をクリックし,検索窓で「StaticMeshActor」と入力し,選択し,「選択」をクリックする.
  • ブループリント名「Sphere_Blueprint」を入力する.
  • コンテンツブラウザの「コンテンツ」に「Sphere_Blueprint」ができる.
  • コンテンツブラウザの「コンテンツ」の「Sphere_Blueprint」をダブルクリックする.
  • ブループリントエディタが開く.
  • 左上の「コンポーネント」パネルで「StaticMeshComponent(継承)」をクリックする.
  • 詳細パネルの「Static Mesh」カテゴリのプルダウンメニューから「Shape_Sphere」を選択する.

コンポーネントを追加する

ブループリントクラスでは,コンポーネントを追加することで様々な機能を持ったクラスを作ることができる.ここでは,上下に動き続ける球から炎が出ているようにする例を通してコンポーネントを追加する方法を説明する.

  • ブループリントエディタを開く.
  • コンポーネントパネルの「コンポーネントを追加」をクリックする.
  • コンポーネントパネルの「ParticleSystem」を選択し,名前(ここではFireとする)を入力する.
  • コンポーネントパネルの「Fire」を選択し,詳細パネルの「Particles」カテゴリのプルダウンメニューから「P_Fire」を選択する.
  • ビューポートタブで炎の位置を調整する.

課題

以下の新規ブループリントプロジェクトを作り,課題を行え.

  • ファーストパーソン
  • デスクトップ/コンソール
  • ハイエンド
  • スターターコンテンツ有り

設計図

課題0

設計図の通りに壁と床と部屋を作れ.

課題1

全ての部屋にテーブルと椅子とポイントライトを配置せよ.

課題2

部屋Aの入口で球が往復するようにせよ.

課題3

部屋Bの入口で炎に包まれた球が往復するようにせよ.

課題4

部屋Cの椅子の上でポイントライトが点滅するようにせよ.

課題5

部屋Dの四隅でスタンドランプが点滅するようにせよ.

課題6

部屋Eの椅子の上でポイントライトの明るさが周期的に変わるようにせよ.

課題7

部屋Fの四隅でスタンドランプの明るさが周期的に変わるようにせよ.

課題8

部屋Gの四隅で炎の大きさが周期的に変わるようにせよ.

課題9

部屋Hのドアが周期的に開閉するようにせよ.