[第7回] メソッドの使い方を学ぶ|Unityで学ぶC#入門
「Unityで学ぶC#入門」の連載第6回は「if文を利用した条件分岐を学ぶ」でした。
第7回の今回はメソッドの使い方についてご紹介していきます。
メソッドを使いこなすことができると、プログラミングの効率が格段に上がりますのでぜひご参考ください。
メソッドとは
そもそもメソッドってなに?と疑問に思う方もいらっしゃるかもしれません。
メソッドとは簡単にいうと「関数」です。
ある変数Xを入力として関数Y(メソッド)に入れると、特定の法則に基づいて出力Zを出力する。これが関数(メソッド)です。
例えば関数「Y=X^2」という関数では、「X=10」を与えると出力「Z=100」が出力されます。
このYの部分をC#でも作成することができます。
メソッドの定義
メソッドの定義方法をご紹介します。
UnityでC#スクリプト「Test」を作成してください。
また、任意のゲームオブジェクトを作成してTestスクリプトを設置してください。
ここまでの方法は連載第3回の記事でご紹介しています。
Testスクリプトを以下のように編集してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { //変数定義 int x = 10; int result; //メソッドYを呼び出す result = Y(x); //出力 Debug.Log("Y = " + result); } //メソッドY,引数x,返り値z int Y(int x){ int z; //xの2乗を計算 z = x * x; //変数zを返す return z; } } |
詳しくプログラムを確認していきます。
まずはメソッドYから確認していきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
//メソッドY,引数x,返り値z int Y(int x){ int z; //xの2乗を計算 z = x * x; //変数zを返す return z; } |
まずは2行目から確認します。
1 2 |
int Y (int x){ } |
これは「返り値の型がint型のメソッドY」で、「引数がint型のx」であることを意味します。
返り値とは出力の値の型です。先ほどの「Y=X^2」で言えばこれは整数(int)もしくは浮動小数点型(float)を返り値の型とするのが適切です。
次に引数とは関数に与える入力のことです。先ほどの「Y=X^2」に与えた「X=10」の型を決めるものです。ここで置いている「x」は仮の変数です。つまり、どんな整数を与えてもメソッド内で扱うときはとりあえず「x」として扱うということを意味しています。
次にメソッドの中身を確認します。
1 2 3 4 5 6 7 |
int z; //xの2乗を計算 z = x * x; //変数zを返す return z; |
ここでは 「int型の変数z」を定義して、与えられた引数の2乗を変数zに代入しています。
ここで作成した変数zを「return z;」とreturn文を記述することで、呼び出し元に変数zの値を返すことができます。
次に呼び出し元となるStart関数を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Start is called before the first frame update void Start(){ //変数定義 int x = 10; int result; //メソッドYを呼び出す result = Y(x); //出力 Debug.Log("Y = " + result); } |
まず「値が10のint型変数x」と「値なしのint型変数result」を定義します。
次にメソッドを呼び出します。
メソッドの呼び出しは
1 |
メソッド名(引数) |
の形で呼び出すことができます。
ここでは10が入った変数xを引数として、メソッドYを呼び出しています。
また、呼び出したメソッドYをそのままresultに代入しています。
最後に出力してプログラム終了です。
それでは実行結果を見てみましょう。
↓実行結果
「x=10」のとき、「Y=100」になっていることが確認できました。
他にも変数xの値を変更して2乗の計算ができていることを確認してみましょう。
↓x=12のときの実行結果
問題なく計算ができていることが確認できました。
そのほかのメソッド例
その他にもメソッドを使用した例をご紹介します。
与えた文字列を連結するメソッド
与えた2つの文字列を連結して返すメソッドをご紹介します。
スクリプトは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { //変数定義 string a = "Hello"; string b = "World"; string result; //メソッドYを呼び出す result = Connect(a,b); //出力 Debug.Log("result = " + result); } //文字列連結メソッド string Connect(string a,string b){ //string型変数zを定義 string z; //a,bを連結してzに代入する z = a + b; return z; } } |
今回は引数を2つ与えています。
1 2 |
string Connect (string a, string b){ } |
このように引数は複数与えることができます。
カンマ区切りで与えることで複数の引数を指定できます。
1 |
メソッド名(引数,引数,・・・) |
↓実行結果
メッセージを出力するメソッド
次に与えた引数を表示する返り値の存在しないメソッドをご紹介します。
スクリプトは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { //変数定義 string a = "XR-hub"; Message(a); } //文字列連結メソッド void Message(string message){ Debug.Log(message); } } |
返り値を必要としないとき、メソッドの型を「void」とします。
1 2 |
void Message(string message){ } |
↓実行結果
まとめ
いかがでしたでしょうか。
今回はメソッドの使い方についてご紹介いたしました。
同じようなコードをできるだけ書かないようにする技術はエンジニアにとって非常に重要です。
プログラミングをするときにはこのようなことを意識すると、作業効率が格段にアップします。
また、C#と並行してUnityの勉強をするとより一層理解も深まりますので、以下記事を参考にUnityのスキルも身につけてみてはいかがでしょうか。
参考記事)Unityの使い方
続けて第8回の記事に読む方はこちらをクリック
他の回の記事について気になる方はこちらをクリック
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!