【Unity入門】関数を使ってみる

2021年10月5日

関数とは

関数とは処理をまとめたものです。

関数に値を入れると、基本的にはその値に処理を加えて別の値を出力します。

関数は

戻り値の型 関数名(引数の型 引数名){
    return 戻り値;}

と記述します。

引数というのは関数に入力する値のことです。

戻り値は関数が出力する値のことです。

作った関数は、引数がない場合

関数名();

と記述することで使うことができます。

引数がある場合は、

関数名(引数);

と記述することで使うことができます。

スクリプトを作成した時に記述されているStart関数と

Update関数も

関数です。

しかし、これらの関数は普通の関数ではなく、イベント関数と呼ばれるものです。

イベント関数は、いつ使われるかはUnityが決めます。

例えば、Start関数はゲームスタート時に使われます。

実際に使ってみる

準備

それでは、関数を使ってみましょう。

まずは、以前作成した、『C# Basics』というプロジェクトを開いてください。

『C# Basics』を開いたら、関数を使うシーンを作りましょう。

Scenesフォルダの中に作成します。

Projectウィンドウで

Scenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、

『Scene』をクリックしましょう。

すると、Scenesフォルダの中に

新しくSceneが作成されます。

Sceneの名前を『Function』に変更しておきましょう。

今回は『Function』の中でオブジェクトの色を変更したいので、Sceneを移動します。

『Function』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『Function』に変わっていますね。

次に関数を使うためにスクリプトを作っておきましょう。

Scriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので『C# Scripts』を選択します。

すると、新しくスクリプトが作成されます。

新しく作ったスクリプトは一度名前が確定してしまうと、その名前がクラス名になったしまいます。

なので、名前が確定してしまう前に名前を変更しましょう。

今回は『Function』と変更します。

名前を変更したら、スクリプトを編集していきましょう。

Functionをダブルクリックしてください。

すると、VIsual Studioが起動して、Functionを編集できるようになります。

スクリプト名とクラス名が一致していなければエラーが出てしまいます。

スクリプト名

クラス名が

完全に一致しているか確認してみてください。

違っている場合は、一致させておいてください。

一つの引数、戻り値ありの関数

それでは、関数を使っていきましょう。

今回は名前を入れたら『こんにちは、(入力した名前)さん』という文字列を返すような関数『Hello』を作ろうと思います。

Updateの下に、

string Hello(string name){    return $”こんにちは{name}さん”;} 

と記述しましょう。

コードの説明をしておくと、この関数はnameという

String型の引数をとって、

String型の

文字列を出力する関数です。

関数は『return』の

右側の値が出力されます。

{name}というのは

文字列の中に変数を埋め込むことを意味しています。

今回はnameなので、引数にとるnameが

埋め込まれます。

例えば、引数として『田中』をとった場合、『田中』が埋め込まれて、『こんにちは田中さん』と出力されます。

普通の文字列には {変数} の形で変数を埋め込むことはできません。

文字列の左横に『$』をつけることで 

{変数} の形で文字列の中に変数を埋め込むことができます。

関数は作っただけでは何も起こらず、実際に使ってみることで意味を成します。

関数は

関数名(引数)

と記述することで使うことができます。

今回は引数に『佐藤』を入れて、『こんにちは佐藤さん』とコンソールに出力したいので、Start関数の中に、

Debug.Log(Hello(“佐藤”));

と記述します。

コードの説明をしておきましょう。

Helloという関数の

引数に『佐藤』という文字列が格納されます。

すると作った関数のnameは全て『佐藤』に変わるので、

関数

Hello(“佐藤”)

の戻り値は『こんにちは佐藤さん』となるはずです。

Debug.Log使ってその戻り値をコンソールに出力する記述をしているので、

コンソールには『こんにちは佐藤さん』と出力されるはずです。

実行して実際に出力されるか確かめてみましょう。

スクリプトを保存して、Unityエディタに戻りましょう。

作成したスクリプトは何らかのオブジェクトに追加しなければ使われないため、Main Cameraにドラッグ&ドロップして追加しておきましょう。

Main Cameraを確認してみると、『Function』が追加されていますね。

この状態で実行してみましょう。

再生ボタンを押してください。

すると、予想通りコンソールには『こんにちは佐藤さん』と出力されましたね。

複数の引数、戻り値ありの関数

関数の引数は複数とることもできます。

作り方は簡単で、

戻り値の型 関数名(引数1の型 引数1, 引数2の型 引数2){    return 戻り値;}

と記述するだけです。

引数が一つの場合の関数と比較すると引数を増やしているだけですね。

実際に引数が複数ある関数を作ってみましょう。

前回作った関数の下に

string Hello(string name1, string name2, string name3){    return $”こんにちは{name1}さん、{name2}さん、{name3}さん”;
}

と記述しましょう。

これで複数の値を持つ関数を作ることができたので、この関数に『佐藤』、『田中』、『山田』という文字列を入れて、その結果出力される文字列をコンソールに出力してみましょう。

Start関数の中に

Debug.Log(Hello(“佐藤”, “田中”, “山田”));

と記述しましょう。

基本的には同じ名前の関数を作ることができないのですが、引数の数が違えば違う関数として扱われるので、同じ名前の関数を作ることができます。

それでは、コードについて説明していきましょう。

引数『name1』には

『佐藤』が、『name2』には

『田中』が、name3には

『山田』がそれぞれ入るので、コンソールには『こんにちは、佐藤さん、田中さん、山田さん』と出力されるはずです。

実際にそのように出力されるのか実行して確かめてみましょう。

スクリプトを保存してUnityエディタに戻ってください。

この状態で実行してみましょう。

再生ボタンを押してください。

すると、予想通りコンソールには『こんにちは佐藤さん、田中さん、山田さん』と出力されますね。

引数、戻り値なしの関数

次に引数も戻り値もない関数を作ってみましょう。

作り方は

void 関数名(){    処理;} 

func 関数名() {
    処理
}

と記述するだけです。

voidというのは『空っぽ』という意味の英単語で、戻り値がないことを表しています。

実際に『こんにちは』とコンソールに出力するだけの関数を作ってみましょう。

void Hello(){    Debug.Log(“こんにちは”);} 

と記述しましょう。

この関数を使うために

Hello();

と記述します。

引数をとらないので、()の中身は何も書き込みません。

この状態で実行すると関数『Hello』が呼ばれてコンソールに『こんにちは』と出力されるはずです。

実際にそうなるのか実行して確かめてみましょう。

スクリプトを保存して、Unityエディタに戻りましょう。

Unityエディタに戻ったら、再生ボタンを押してください。

すると、予想通りコンソールには『こんにちは』と出力されましたね。