Contenu connexe Similaire à Unity + C#講座① Similaire à Unity + C#講座① (20) Unity + C#講座①3. この講座でやること
• 前の講座の復習やるよ
• C# 変数 , 型 , 真偽値 , if , while, for , 配列 , リスト , 関数
• Unity GameObject , Component , uGUI
• 新しい概念に触れてみるよ
• C# クラス
• Unity 音声再生 ・ エフェクト ・ アニメーション
• QGJで書いてもらったプログラムを見てみるよ
• ここはこう書く手もある みたいな話をします
4. この講座でやること
• 前の講座の復習やるよ
• C# 変数 , 型 , 真偽値 , if , while, for , 配列 , リスト , 関数
• Unity GameObject , Component , uGUI
• 新しい概念に触れてみるよ
• C# クラス
• Unity 音声再生 ・ エフェクト ・ アニメーション
• QGJで書いてもらったプログラムを見てみるよ
• ここはこう書く手もある みたいな話をします
8. 復習 : 変数
• ものに付ける名札みたいなもの
• (前の講座の内容とちょっと違うかも)
int num = 42;
numは整数の42としよう
42
num
「宣言」「初期化」という
9. 復習 : 変数
• 指しているものを見ることができる
42
num
Debug.Log(num);
numが指してるものを表示しよう
42
(Debug.Log(42);と解釈)
10. 復習 : 変数
• 指しているものを書き換えることができる(「代入」)
num = 100;
numが指してるものを100にしよう
100
Debug.Log(num);
100
num(Debug.Log(100);と解釈)
「代入」という
11. 復習 : 変数
• 「見る」と「書き換える」の組み合わせ
num = num + 10;
numが指してるものを10増やそう
110
Debug.Log(num);
(num = 100 + 10;と解釈)
110
num
100
num
12. 復習 : 変数
• 演算子
• a = a + ○ みたいな代入はよくやるので特別な書き方がある
• 「1足す」「1引く」は更に省略可能
足し算 ○ + □ 6 + 2 → 8
引き算 ○ - □ 6 - 2 → 4
掛け算 ○ * □ 6 * 2 → 12
割り算 ○ / □ 6 / 2 → 3
あまり ○ % □ 6 % 2 → 0
a = a + ○ → a += ○
a = a - ○ → a -= ○
a = a * ○ → a *= ○
a = a / ○ → a /= ○
a = a + 1 → a += 1 → a++
a = a - 1 → a -= 1 → a--
14. 復習 : 型
• 「値の種類」みたいなもの
• 例えば
• 整数 int型 42 , -100
• 実数 float型 3.14f , -1f
• 文字列 string型 "Unity" , "Hello, C#!"
• 真偽値 bool型 true , false (YesとNo)
• 変数には型がある
• 「宣言」の時に型を決めている
• 型名 変数名 = 初期値;
• int num = 42;
15. 復習 : 型
• 基本的に型が違うと代入できない
int num = 42;
numは整数の42としよう
num = "Unity";
エラーや!
stringをintに変換できへん!
string型の"Unity"を
int型の変数に代入しようとした
16. 復習 : 型
• 演算すると型が変わったりする
• int と int → int
• 6 / 2 → 3
• 5 / 2 → 2
• 1 / 2 → 0
• int と float→ float
• 6 / 2f → 3f
• 5 / 2f → 2.5f
• 1 / 2f → 0.5f
• int と string → string
• "Lesson" + 1 → "Lesson1"
• float と string → string
• "Unity" + 2019.1f → "Unity2019.1"
18. 復習 : 真偽値
• Yes / No を表す型、bool型の話
• 「比較演算子」の結果はbool型になる
○と□が等しい ○ == □
○と□が異なる ○ != □
○が□以上 ○ >= □
○が□以下 ○ <= □
○が□を超える ○ > □
○が□未満 ○ < □
4 == 4 → true 3 == 4 → false
4 != 4 → false 3 != 4 → true
3 >= 3 → true 3 >= 4 → false
3 <= 3 → true 3 <= 4 → false
3 > 3 → false 3 > 4 → false
3 < 3 → false 3 < 4 → true
19. 復習 : 真偽値
• 「または」「かつ」が使える
• 「または」 一方でも true であれば true
• ○ || □ で表す
• true || false → true
• 「かつ」 両方が true であれば true
• ○ && □ で表す
• true && false → false
21. 復習 : if , while , for
• プログラムで出来ることは 3種類
① 上から順番に実行する
② 条件が満たされている時処理Aを、満たされていない時処理Bを行う
③ 条件が満たされている間処理を繰り返す
• 方法
① 並べて書けば基本的に上から実行される
② if を使う
③ while を使う
① ③②
22. 復習 : if
• 条件が満たされている時処理Aを、満たされていない時処理Bを行う
• 書き方
• 条件の部分には真偽値が入る
• else {} の部分はなくても大丈夫
if (条件) {
処理A;
} else {
処理B;
}
条件判定
処理A 処理B
条件がtrue 条件がfalse
23. 復習 : if
if (true) {
Debug.Log("処理A");
} else {
Debug.Log("処理B");
}
処理A
if (false) {
Debug.Log("処理A");
} else {
Debug.Log("処理B");
}
処理B
• ifの中身がtrueの場合、上が実行 • ifの中身がfalseの場合、下が実行
24. 復習 : if
int num = 10;
if (num >= 5) {
Debug.Log("5以上やで");
} else {
Debug.Log("5未満やで");
}
(今は num は 10 だから
num >= 5 は true やねんな…)
5以上やで
25. 復習 : if
int num = 10;
if (num >= 5 && num < 8) {
Debug.Log("5以上かつ8未満やで");
} else {
Debug.Log("5未満か8以上かやで");
}
(今は num は 10 だから
num >= 5 は true で
num < 8 は false やな
で、true && false は false やから…)
5未満か8以上かやで
26. 復習 : while , for
• 「繰り返し」のための手段
• 「繰り返し」が出来ないと……
• 例えば、0から10の整数を表示する場合 →
• 1000までとかになったら無理!
• 「繰り返し」があれば1000まででも簡単に書ける
• 最初 num は0
• num が 1000 以下の場合、
num を 表示し、 num を 1 増やす
Debug.Log(0);
Debug.Log(1);
Debug.Log(2);
Debug.Log(3);
Debug.Log(4);
Debug.Log(5);
Debug.Log(6);
Debug.Log(7);
Debug.Log(8);
Debug.Log(9);
Debug.Log(10);
27. 復習 : while
• 条件が true の間処理を繰り返す
• 書き方
• 条件の部分には真偽値が入る
while (条件) {
処理;
} 条件判定
条件がtrue
処理
条件がfalse
28. 復習 : while
処理
while (false) {
Debug.Log("処理");
}
• 条件がtrueの場合、処理を繰り返す • 条件がfalseの場合、処理は実行されない
while (true) {
Debug.Log("処理");
}
処理
処理
処理
処理
29. 復習 : while int num = 0;
while (num <= 10) {
Debug.Log(num);
num += 1;
}
0
1
10
(今 numは11やな
num <= 10がfalseやから
繰り返しを終わるで)…
• 0から10を表示する
30. 復習 : for
• while の特殊な書き方
ループに入る前に行う処理;
while (条件) {
メインの処理;
メインの処理の後に行う処理;
}
for (ループに入る前に行う処理; 条件; メインの処理の後に行う処理) {
メインの処理;
}
条件判定
条件がtrue
主処理
条件がfalse
前処理
後処理
31. 復習 : for
• 例えば、この2つは同じ(両方とも0から10を表示する)
int num = 0;
while (num <= 10) {
Debug.Log(num);
num++;
}
for (int num = 0; num <= 10; num++) {
Debug.Log(num);
}
33. 復習 : 配列 , リスト
• 複数の値を楽に扱うための手段
• これがないと…
• 複数の値の合計を求める場合 →
• 5個ならまだどうにかなるが…
• 個数が増えると大変!(変数を増やすのか?)
• 配列やリストがあれば簡単に書ける
• 何個になっても大丈夫
int a = 10;
int b = 5;
int c = 18;
int d = 431;
int e = 159;
int sum = a + b + c + d + e;
34. 復習 : 配列 , リスト
• 配列も、リストも、同じ型のデータを並べたもの
• 違い
• 配列は要素の個数が固定(区切られた箱に値を入れるイメージ)
• リストはどんどん要素を追加、削除していける(値を鎖で繋げるイメージ)
• ちょっと宣言方法が特殊
• int[] array = new int[5];
• List<int> list = new List<int>();
型名[] 変数名 = new 型名[要素の個数];
List<型名> 変数名 = new List<型名>();
35. 復習 : 配列 , リスト
• 宣言と同時に代入も可能
• int[] array = new int[5] {1, 3, 5, 6, 8};
• List<int> list = new List<int>() {1, 3, 5, 6, 8};
• ○個目 の要素を見る場合
• 変数名[○] とする
• ただし、最初の要素は0番目
3
Debug.Log(array[1]);
6
Debug.Log(list[3]);
36. 復習 : 配列 , リスト
• ○個目 の要素を書き換える場合
• 変数名[○] = 値 とする
3
Debug.Log(array[1]);
100
array[1] = 100;
Debug.Log(array[1]);
3
Debug.Log(list[1]);
100
list[1] = 100;
Debug.Log(list[1]);
37. 復習 : 配列 , リスト
• for と相性が良い
int[] array = new int[5] {1, 3, 5, 6, 8};
for (int i = 0; i < array.Length; i++) {
Debug.Log(array[i]);
}
1
3
5
6
8
array.Length は配列の要素の個数を返す
この場合は「5」
39. 復習 : 関数
• 機能付きの箱みたいなもの
• 入り口があったり出口があったりする
• 入り口に入れるものを「引数」、出口から出てくるものを「戻り値」という
40. 復習 : 関数
• 例①
• 「こんにちは」と表示するだけの関数 SeyHello
SeyHello
こんにちは
void SayHello() {
Debug.Log("こんにちは");
}
こんにちは
SayHello();
41. 復習 : 関数
• 例②
• 戻り値として、string型の"こんにちは"を返す関数 GetHello
string GetHello() {
return "こんにちは";
}
GetHello
string
(GetHello()は"こんにちは"を返すんか)
Debug.Log(GetHello());
(Debug.Log("こんにちは");
ってことやな)
こんにちは
42. 復習 : 関数
• 例③
• 引数として2つの整数を入力し、
• 入力された整数の和を表示する関数 SaySum
SaySum
和は~~やで
void SaySum(int a, int b) {
Debug.Log("和は" + (a + b) + "やで");
}
int int
(SaySumの中を見てみると……
Debug.Log("和は" + (1 + 5) + "やで");
ってことやから…)
SaySum(1, 5);
和は6やで
43. 復習 : 関数
• 例④
• 引数として2つの整数を入力し、
• 戻り値として、入力された整数の和を返す関数 GetSum
GetSum
int GetSum(int a, int b) {
return a + b;
}
int int
int
(GetSum(1, 5)は6を返すんやな
Debug.Log("和は" + 6 + "やで");
ってことやから…)
Debug.Log("和は" + GetSum(1, 5) + "やで");
和は6やで
46. GameObject と Component
• GameObject
• 世界の中にある「コア」みたいなもの
• それ自体は 触れない 見えない 何もしない
• ただ「そこにある」だけ
• Component
• GameObjectにくっつける「機能」みたいなもの
• 「触れる」という機能 Collider
• 「見える」という機能 Renderer
• 「音が鳴る」という機能 AudioSource
• その他、自作の機能(キーを押したら動くとか)