見出し画像

Unity勉強11日目:定義の範囲/メソッド/値を渡す返す/引数

毎日30分勉強をしています。昨日はclassを使ってUnityのコンポーネントに指示をする仕組みについて学び、
あとは式の書き方と省略の仕方を学んだ。

今日はメソッドの使い方について。

■メソッドとは

StartやUpdateの中にある指示がメソッド。
自分でも作ってみよう!

void test()
{
Debug.log("testが呼ばれた");
}

void=何も返さないという意味
testは名前
{はメソッドの範囲のはじめ

そのままだとどこからも呼ばれてないため、
Startメソッドの中に
test();
でメソッドを呼ぶことができる。

その前後に、
Debug.log("Start1");
test();
Debug.log("Start2");

と入れて実行すると、
・呼び出される>直ぐ実行
・処理が終わる>呼び出し元に戻る

と処理され

UnityがStartを呼び出す
>Startがメソッドを呼び出す
>Startに戻る

となる。

ちなみに

Debug.log("Start1");
test();
test();
Debug.log("Start2");

としたら、testは2回呼び出される。

ここらへんからが難しい、、、笑

■スコープの範囲

スコープとは、その定義の有効範囲のこと。
クラス内で
int b=0で定義し、

自分の作ったメソッド内で
++b;と1を足し

Startメソッド内で
test();
test();
test();

で3回呼び出すと3になる。

画像1

↑これが3

■Startメソッドと自分で作成したメソッド両方で定義した場合

次に
Startメソッド内と自分が作ったメソッドの両方で変数を定義した場合は?

その場合はStartメソッド内の定義が有効になる。

■値を渡す

画像2

自分のメソッドの()内に
int b(引数)を入れて
メソッド内に
Debug.log(b);を入れる

そしてStartメソッドの中に
test(1);
test(2);
test(3);

を入れる

そうすると、Startメソッドから自分のメソッドに値を渡すことができる。
ログでもデータが表示されて呼び出されてる。

画像3

→これをどんな時に使うかはまだあんまりイメージがわかない。

■数字ではない変数を渡す

上の応用としてStartメソッドの中で定義したら数字は渡せるか?

int b=0;
test(1);
test(2);
test(3);
Debug.log(b);

自分のメソッドを
void test(int b)にして
++b;(1を足す)

この場合はStartないのint b=0;が優先されて0になる。

■変数の定義をStartではなくclass(もっと広い範囲)で定義した場合は?

その場合は狭い範囲である自分のメソッドの方が優先される。

スクリーンショット 2020-09-01 8.29.21

■複数の引数を使う

自分のメソッドないに

void test(int a, int b, int c)
{
Debug.Log(a+b+c)
}

void test(int a, int b, int c)と3つ定義(引数)して
3つをDebugで足し算をする。

その後にStartメソッドないで

{
test(1,2,3)
}

と引数と同じようにデータを入れると、複数のデータを渡せて、
1+2+3で6になる。

スクリーンショット 2020-09-01 8.33.44

■値を返す

スクリーンショット 2020-09-01 8.38.46

voidは何も返さないため、自分のメソッドないのこれをintで実施してみる。
そしてDebugをreturnにする

int test(int a, int b, int c)
{
return a+b+c
}

をして、Start型の中では

int d=test(1,2,3)とdに代入と定義し
Debug.Log(d)でdをログに表示させる

リターンに指定したデータを書くと、リターンで呼び出し元(Start)にかえるらしい。返ってきただけだと何もならないので、変数を定義してデータを代入してるらしい。(まだ意味はわかってない)

スクリーンショット 2020-09-01 8.38.33


そして、リターンでデータを返すと自分のメソッドで、

int test(int a, int b, int c)
{
return a+b+c
Debug.log("test")
}

とログを表示させたくても、Startメソッドに戻るため、表示されない。

その後のリターンでのスコープの部分はちょっとお手上げでした。笑

■明日やること

9:06のメソッドを使って整理しようから再度実施。


■今後やること

・Unityのチュートリアルをする
・Unity初心者をする
・Unityのサンプルを分解
・簡単なゲームを作る
・建物空間とシーン(無限城を作ってみたり)
・アセットを使って動かす
・C#やpythonが足りなければドットインストール
・スクレイピングサービスを作ってみる

この記事が参加している募集

アート、教育、探究、子育て、生き方。アーティストとして、スクール長として、本音しか書きません!