32. 関数

目的

ブループリントで処理を記述する際に,処理のまとまりを関数として表現することがある.ここでは関数の作り方を学ぶ.

説明

ここでは,名前を入力すると「Hello, 名前. How are you?」というメッセージを出力する関数を作る例を通して,関数の作り方を説明する.

関数を作成する

関数を作成するには,以下のようにすればよい.

  • レベルブループリントエディタのマイブループリントタブの関数サブタブの「+」をクリックする.
  • 関数名(ここではWelcomeMessageとする)を入力する.
  • WelcomeMessage関数タブのウィンドウにWelcomeMessageノード(エントリーノード)が表示される.

WelcomeMessage関数が呼び出されると,WelcomeMessageノード(エントリーノード)が実行される.

関数の入出力を設定する

関数の入出力を設定するには,以下のようにすればよい.

  • マイブループリントタブでWelcomeMessage関数を選択する.
  • 詳細パネルのインプットの「+」をクリックする.
    • 変数名(ここではNameとする)を入力し,型(ここではStringとする)を選択する.
    • エントリーノードにName変数出力ピンが追加される.
  • 詳細パネルのアウトプットの「+」をクリックする.
    • 変数名(ここではMessageとする)を入力し,型(ここではStringとする)を選択する.
    • Message変数入力ピンがあるリターンノードが作成される.

関数の内容(処理)を作成する

関数の内容(処理)はイベントグラフで記述すればよい.ここでは文字列を連結することができるAppendノードを使用して処理を記述する.

  • WelcomeMessage関数タブのウィンドウにAppendノードを追加する.
  • Appendノードの変数入力ピンAに「Hello, 」と入力する.
  • WelcomeMessageノードの変数出力ピンNameとAppendノードの変数入力ピンBを繋ぐ.
  • Appendノードの「ピンを追加」をクリックする.
  • Appendノードの変数入力ピンCに「. How are you?」と入力する.
  • Appendノードの変数出力ピンReturnValueとリターンノードの変数入力ピンMessageを繋ぐ.
  • コンパイルする.

関数をイベントグラフから呼び出す

ここでは,プレイを開始するとメッセージが表示されるようにする.

  • イベントグラフに戻る.
  • イベントBeginPlayノードを追加する.
  • マイブループリントタブの関数サブタブからWelcomeMessage関数をイベントグラフにドラッグアンドドロップする.
  • イベントBeginPlayノードの実行出力ピンとWelcomeMessageノードの実行入力ピンを繋ぐ.
  • PrintStringノードを追加する.
  • WelcomeMessageノードの実行出力ピンとPrintStringノードの実行入力ピンを繋ぐ.
  • WelcomeMessageノードの変数出力ピンMessageとPrintStringノードの変数入力ピンInStringを繋ぐ.
  • WelcomeMessageノードの変数入力ピンNameに「Mike」と入力する.
  • コンパイルする.
  • プレイする.
  • 左上に「Hello, Mike. How are you?」と表示される.

関数の入力を変えて呼び出す

  • WelcomeMessageノードの変数入力ピンNameを「David」に変更する.
  • コンパイルする.
  • プレイする.
  • 左上に「Hello, David. How are you?」と表示される.

関数を使う利点

  • reusability
    • 入力(上の例では名前)が違うだけで同じ処理をたくさんすることがある.
    • 1つ関数を作り,呼び出して使えば良い.
  • editability
    • 上の例でメッセージを少し変えたい.
    • 関数中の1箇所を変えるだけでよい.
  • reliability
    • 過去に何度か使ってうまく動いている場合,既にテストされ,デバッグされている.
    • 信頼して使用することができる.
  • readability
    • 関数が多くのノードから成っていても関数は1つのノードとして呼び出せる.
    • ゲームの高次のロジックが理解しやすくなる.

課題

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

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

課題0

名前を入力すると,「My name is 名前.」という自己紹介を出力する関数を作成せよ.

課題1

名前と趣味を入力すると,「My name is 名前. I’m crazy about 趣味.」というメッセージを出力する関数を作成せよ.

課題2

名前と趣味と年齢を入力すると,「My name is 名前. I’m crazy about 趣味. I’m 年齢 years old.」というメッセージを出力する関数を作成せよ.

課題3

名前と趣味と年齢と身長を入力すると,「My name is 名前. I’m crazy about 趣味. I’m 年齢 years old, and 身長 cm tall.」というメッセージを出力する関数を作成せよ.

課題4

アイテム名が保存されている配列を入力すると,アイテム名を全て表示する関数を作成せよ.

課題5

アイテム名が保存されている配列を入力すると,アイテム数を表示する関数を作成せよ.

課題6

アイテム名が保存されている配列と新しいアイテム名を入力すると,新しいアイテム名を配列の最後に追加し,全てのアイテム名を表示する関数を作成せよ.

課題7

アイテム名が保存されている配列と新しいアイテム名とインデックス番号を入力すると,新しいアイテム名を配列の指定したインデックス番号に追加し,全てのアイテム名を表示する関数を作成せよ.

課題8

アイテム名が保存されている配列を入力すると,最後のアイテム名を削除し,全てのアイテム名を表示する関数を作成せよ.

課題9

アイテム名が保存されている配列とインデックス番号を入力すると,指定したインデックス番号のアイテム名を削除し,全てのアイテム名を表示する関数を作成せよ.