スクラッチからUnityへシフトアップ!
9回目は完結編「定義」グループのご紹介です。
ブロック定義は「関数」と呼ばれる機能で実現します。
関数はその動きを定義する部分(作成する部分)と作成された関数を呼び出す部分が必要になります。また関数には「引数」「戻り値」なども機能もあります。
定義の作成(引数無し)
最も簡単な関数は、引数も戻り値もないパターンの関数です。
関数を定義する場合、頭に型名を指定、その後に任意の関数名を指定、さらに( )(丸カッコ)を記述して、{ }(中カッコ、波カッコ=ブレース)の中に命令文を記述します。
頭の型名ですが戻り値の型を指定するもので、戻り値が無い関数を作成する場合、「void」を指定します。「void」は空(から)の意味を持ち、戻り値が無いことを示唆します。
使用例 戻り値、引数無しの関数定義
void Move()
{
transform.position += Vector3.right * 0.01f; //0.01ずつ右に移動
}
定義の呼び出し(引数無し)
定義を呼び出す場合は、定義した関数名を丸カッコ付きで記述します。
使用例 戻り値、引数無しの関数の呼び出し
if (Input.GetKey(KeyCode.D)) //もしDキーが押されたら
{
Move(); //関数 Move() を発動
}
定義の作成(引数あり)
引数とは、関数にバリエーションを与えるもので、関数内で変化させたい部分を引数を使って置き換えます。引数は変数の宣言と同じように、型名と引数名をセットで指定します。また、1つの関数に引数はいくつでも指定することが出来ます。
使用例 戻り値なし、引数ありの関数定義
void Move(float speed) //引数:小数型のspeed を指定
{
transform.position += Vector3.right * speed; //speed の速さで右に移動
}
定義の呼び出し(引数あり)
引数がある関数を呼び出す場合は、関数名の後のカッコの中に指定する引数の値を記載します。引数が複数ある場合は、,(カンマ)で区切って定義された順番に記述します。
使用例 戻り値なし、引数ありの関数の呼び出し
if (Input.GetKey(KeyCode.D)) //もし Dキーが押されたら
{
Move( 0.02f ); //関数 Move() に 0.02f の引数を代入し発動
}
定義の作成(引数あり、戻り値あり)
スクラッチには「戻り値」という機能はありませんが、「戻り値」定義を呼び出したときの結果というものになります。
例えば左のブロックの様に、定義の引数に(数字1)と(数字2)を用意し、定義の内容に、
数字1+ 数字2 の答えを言う
というブロックを作ったとします。
Unityで同じようにこの関数を定義した時、答えを整数型で求めたい場合は、関数の型に整数型(int型)を指定します。
もとめたい答えは「return」をいう文字の後に指定します。
戻り値、引数のある関数の作成
int Add(int a,int b) //整数型の引数:a,b 、及び整数型で戻り値を求める関数
{
return a + b; //引数:a +引数:b の答えを返す
}
定義の呼び出し(引数あり、戻り値あり)
戻り値有りの関数を呼び出すには、関数の後のカッコの中に引数を入れて発動します。発動したときにその関数に、関数を発動した結果の値が代入されます。
例えば左の事例では、スペースキーが押されたとき、関数「足し算」に引数:3 と引数:5 が渡され実行、実行プログラムで答えを言います。
Unityでは関数の実行プログラムで行われるのは計算のみ、発動のタイミングで発言させたり表示させたりします。
関数の発動 引数あり、戻り値有り
if (Input.GetKeyDown(KeyCode.Space)) //スペースキーが押された
{
Debug.Log(Add(3, 5)); //引数:3,5 を渡して関数を発動
} //Consol に 8 と表示される
ファイブボックスでは、スクラッチはもう卒業、という方向けにUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。
Comments