イベントディスパッチャー(Event Dispatcher)

【概要】

 :あるオブジェクトが他のオブジェクトにイベントを通知する仕組みのこと。

 :異なるブループリント(以下、BP)間の通信や、特定の条件が満たされた際のイベント処理を設定することができる。

【例】

キャラクターのヘルス変更

 1)キャラクターBPを開く

 2)イベントディスパッチャー
   を追加する

  :「Event Dispatchers」
   >「Add Event Dispatcher」
    を選択する。

  (仮に「OnHealthChanged」という名前のイベントディスパッチャーを作成する。)

 
 3)HUD BP を開く

 4)バインドノードを設定する

  :イベントグラフで、
   「Begin Play」を追加する。

  :「Bind Event to
    OnHealthChanged」
    というノードを使用して、
   
    キャラクターBP の
   「OnHealthChanged」
    とバインド(紐付)する。
 

 5 )新しいカスタムイベント
   を作成する。

   
  (仮に「UpdateHealth」
   というイベントを作成する)

   :作成したイベントを
    「Bind Event to
      OnHealthChanged」
     ノードの出力に接続。
 
    
 6 )キャラクターBPで
   ヘルス変更の処理を書く


  :「Call OnHealthChanged」
   で、イベントを呼び出す。

  (例えば、ヘルスが減少したときにこのノードを呼び出す処理を書く。)


 7 )HUDブループリントで
   イベントハンドラを実装する

  (例えば、「UpdateHealth」で、HUDのヘルス表示を更新する)

ブループリントインヘリタンス(Blueprint Inheritance)

【概要】

 :親ブループリントから子ブループリントがプロパティ、関数、イベントを継承する仕組みのこと。

例】

 ・キャラクターの継承

  a. 親ブループリントの作成

   1)BaseCharacterの作成
     :BaseCharacterブループリントを作成する。共通のプロパティ(例:Health、Speed)や関数(例:Move、Attack)を定義する。

   2)プロパティの設定
     :Health や Speedの初期値を設定する。

   3)関数の定義
     :Move 関数と Attack 関数を定義する。

  b. 子ブループリントの作成

   1)WriorCharacterの作成
     :BaseCharacter ブループリントを基にWriorCharacterブループリントを作成する。

   2)プロパティの
     オーバーライド
     :WriorCharacter 内で、Health や Speed の値を上書きする。       (例:Health を 200、Speed を 300 に設定)。

   3)関数のオーバーライド
     :BaseCharacter の Attack 関数をオーバーライドし、特定の攻撃ロジックを実装する。  (例:Wrior特有の攻撃アニメーションを追加)。

エンム(Enum)

【概要】

 :データ型の一つで、関連する定数の集合を定義する。

【使い方】

 1.コンテンツブラウザで
   Enumを作成する
   :コンテンツブラウザで右クリック >「Blueprints」>「Enumeration」を選択する。
   :新しいEnumアセットに名前を付ける(例:ECharacterState)。

 2.Enumを定義する
   :Enumエディタを開き、列挙値を追加する。(例:Idle, Running, Jumping, Attacking)。

 3.変数の作成
   :ブループリント内で、新しいEnum型の変数を作成する。
   :変数の型を作成したEnum型(例:ECharacterState)に設定する。

 4.Enumの使用
   :Enum変数を条件分岐やスイッチノードで使用する。例えば、キャラクターの状態によって異なるアクションを実行するなど。

【例1】

 ・キャラクターの状態管理

  1)Enumの作成
    :キャラクター状態を管理するEnum(例:ECharacterState)を作成する。状態には、Idle, Running, Jumping, Attacking を含める。

  2)状態の変更
    :ゲームプレイ中に、キャラクターの動作に応じて状態を変更する。例えば、プレイヤーが移動キーを押したら Running 状態に変更するなど。

  3)状態に基づく処理
    :状態に基づいて異なるアニメーションやロジックを実行する。例えば、Running 状態では走るアニメーションを再生するなど。

【例2】

 ・アイテムのレアリティ

  1)Enumの作成
    :アイテムのレアリティを管理するEnum(例:EItemRarity)を作成する。レアリティには、Common, Uncommon, Rare, Epic, Legendary を含める。

  2)アイテムの生成
    :アイテムを生成する際に、レアリティを設定する。例えば、宝箱を開けたときに、ランダムなレアリティのアイテムを生成する。

  3)レアリティに基づく効果
    :アイテムのレアリティに基づいて、効果や価値を変更する。例えば、レアリティが高いほど強力な効果を持つアイテムにするなど。

デリゲート(Delegate)

【概要】

 :あるオブジェクトが別のオブジェクトに対してイベントを通知するための仕組みのこと。

 :例えば、キャラクターの衝突、ボタンのクリック、タイマーの終了などを効率的に処理する。

【詳細1】

 ・イベント通知
  :特定のイベントが発生したときに、デリゲートを使用して他のオブジェクトに通知する。

 ・一対多の関係
  :一つのデリゲートに対して複数のリスナーを登録できる。つまり、一つのイベントが発生すると、すべてのリスナーが通知を受け取れる。

【詳細2】

 ・シンプルデリゲート
  (Simple Delegate)
   :引数を取らずに通知するデリゲート。

 ・シングルキャストデリゲート
  (Single Cast Delegate)
   :一つのリスナーのみを持つデリゲート。

 ・マルチキャストデリゲート
  (Multicast Delegate)
   :複数のリスナーを持つことができるデリゲート。

【例】

 ・ボタンのクリックイベント

  1)デリゲートの宣言
    :ブループリントに「OnButtonClicked」という名前のデリゲートを宣言する。

  2)デリゲートのバインド
    :UIボタンをクリックしたときに「OnButtonClicked」デリゲートを呼び出す設定をする。
    :ボタンのクリックイベントで「Assign OnButtonClicked」ノードを使用する。

  3)デリゲートのハンドリング
    :「OnButtonClicked」デリゲートに応答するイベントハンドラを作成する。このハンドラ内で、ボタンがクリックされたときの処理を定義する。

サブルーチン(Subroutine)

【概要】

 :ブループリント内で再利用可能なノードの集合を作成するツールのこと。

 :Unreal Engineでは、サブルーチンのことを「関数(Function)」と呼ぶことが多い。

【例】

 ・プレイヤーダメージ処理の
  サブルーチン
   
  1)関数の作成
    :「ApplyDamage」という名前の新しい関数を作成する。この関数で、プレイヤーにダメージを適用する処理を行う。

  2)引数の設定
    :「DamageAmount」という名前の引数を追加し、タイプを「float」に設定する。この引数は、適用するダメージの量を表す。

  3)ノードの追加
    :関数グラフ内で「Get Player Health」ノードを追加し、プレイヤーの現在のヘルスを取得する。

    :「Subtract」ノードで、プレイヤーの現在のヘルスから「DamageAmount」を除算する。

    :「Set Player Health」ノードを使用して、更新されたヘルスをプレイヤーに設定する。

  4)関数の呼び出し
    :イベントグラフに戻り、例えば「OnHit」イベント内で「ApplyDamage」関数を呼び出す。
    
    :ヒット時に適用するダメージ量を引数として渡す。

インターフェース(Interface)

【概要】

 :ブループリントやC++クラス間での共通の機能を定義する手法のこと。

 :インターフェースを使用すると、異なるクラスが同じメソッドを実装できる。

 :例えば、特定の機能を持つクラス間の通信や動作の標準化に利用する。

【作り方】

 1.インターフェースアセット
   の作成
   :コンテンツブラウザ右クリック >「Blueprints」>「Blueprint Interface」を選択する。インターフェースアセットに名前を付ける。

 2.メソッドの定義
  :インターフェースエディタを開き、共通のメソッドを定義する。
  
  :メソッドには入力と出力のパラメータを設定できる。

 3.クラスの作成
  :インターフェースを実装するクラス(ブループリントまたはC++クラス)を作成する。

 4.インターフェースの追加
  ・ブループリントの場合
   :クラスの「Class Settings」パネル >「Implemented Interfaces」セクション

 5.メソッドの実装
  :インターフェースで定義したメソッドをクラス内で実装する。
  
  :ブループリントでは、イベントグラフに対応するイベントを追加して、ロジックを実装する。

 6.インターフェースの呼び出し

  a. ブループリントから呼び出し
   :インターフェースを実装するオブジェクトに対して、インターフェースメソッドを呼び出す。

   :例えば、「Interface Call」ノードを使用して、特定のメソッドを呼び出す。

  b. キャストの使用
   :インターフェースの実装を確認するため、「Cast To Interface」ノードを使用する。
  
   :オブジェクトがインターフェースを実装している場合は、メソッドが呼び出せる。

【例】

 ・ダメージシステム
   
  1)インターフェースの作成
    :「IDamageable」というインターフェースを作成して、「ApplyDamage」というメソッドを定義する。このメソッドはダメージの量を入力パラメータとして受け取る。

  2)クラスの実装
    :複数のクラス(例:キャラクター、オブジェクト)で「IDamageable」インターフェースを実装し、「ApplyDamage」メソッドを定義する。
    
    :それぞれのクラスは、ダメージを受けたときの独自の処理を実装する。

  3)ダメージの適用
    :攻撃を行うクラスから、ターゲットに対し「ApplyDamage」メソッドを呼び出す。
    
    :ターゲットが「IDamageable」インターフェースを実装している場合、対応するダメージが処理される。

コンストラクションスクリプト(Construction Script)

【概要】

 :ゲームのプレイ中ではなく、エディタ上で実行されるブループリントのスクリプトのこと。
 
 :アクタがレベルに配置されたり、プロパティが変更された際に実行される。(ゲームプレイ中の動的な変更には使用されない。)

【例】

 1.Static Mesh Component
   の追加
  :「Add Static Mesh Component」ノードをコンストラクションスクリプトに追加する。

  :このノードを使用して、新しいスタティックメッシュコンポーネントをアクタに追加する。

 2.メッシュの設定
  :「Set Static Mesh」ノードを使用して、特定のメッシュアセットを設定する。

 3.位置の設定
  :「Set Relative Location」ノードを使用して、追加したメッシュの位置を設定する。

キャリブレーション(Calibration)

【概要】

 :システムやデバイスの精度を高め、正確な動作を保証するために行う調整プロセスのこと。

 :特にモーションキャプチャやVR、カメラトラッキングなどの精度が求められる環境で使用する。

【詳細】

 ・モーションキャプチャ
  :キャプチャの正確なトラッキングのために、センサーやカメラの位置や角度を調整する。

 ・VRシステム
  :ヘッドセットやコントローラーのトラッキング精度を向上させる。

Collab Viewer(コラボビューワー)

【概要】

 :Unreal Engineのテンプレートプロジェクトの一つ。

 :複数のユーザーがリアルタイムで同じ3Dシーンを共同閲覧および操作できる環境を提供する

【詳細】

 ・リアルタイムコラボレーション
  :複数のユーザーが同じ3Dシーンに同時にアクセスし、リアルタイムで共同作業ができる。

 ・マルチユーザーサポート
  :ネットワーク経由で複数のユーザーが接続し、それぞれの視点や操作を共有できる。

 ・インタラクティブツール
  :メジャーツール(測定ツール)や注釈ツールなどのツールが含まれる。

 ・プラットフォーム互換性
  :デスクトップやVRデバイスなど、様々なプラットフォームでコラボレーションができる。

Pakファイル

【概要】

 :ゲームのアセットやコンテンツを一つのファイルにまとめて保存するためファイル。

 :ゲームのデプロイメントや配信、ロードパフォーマンスの向上を実現する。

【詳細】

 ・配布の簡略化
  :ゲームのインストールやアップデートをシンプル化する。

 ・セキュリティ
  :アセットが改ざんされるリスクが低減する。Pakファイルは暗号化できる。

 ・ロードパフォーマンスの向上
  :ディスクI/O操作の回数を減らすことで、ゲームのロード時間を短縮できる。