SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Unity + C# 発展講座①
ゆゆ
の前に
• QGJ
• お疲れさまでした
この講座でやること
• 前の講座の復習やるよ
• C# 変数 , 型 , 真偽値 , if , while, for , 配列 , リスト , 関数
• Unity GameObject , Component , uGUI
• 新しい概念に触れてみるよ
• C# クラス
• Unity 音声再生 ・ エフェクト ・ アニメーション
• QGJで書いてもらったプログラムを見てみるよ
• ここはこう書く手もある みたいな話をします
この講座でやること
• 前の講座の復習やるよ
• C# 変数 , 型 , 真偽値 , if , while, for , 配列 , リスト , 関数
• Unity GameObject , Component , uGUI
• 新しい概念に触れてみるよ
• C# クラス
• Unity 音声再生 ・ エフェクト ・ アニメーション
• QGJで書いてもらったプログラムを見てみるよ
• ここはこう書く手もある みたいな話をします
はじめに
Unityを起動します
変数
復習 : 変数
• ものに付ける名札みたいなもの
• (前の講座の内容とちょっと違うかも)
int num = 42;
numは整数の42としよう
42
num
「宣言」「初期化」という
復習 : 変数
• 指しているものを見ることができる
42
num
Debug.Log(num);
numが指してるものを表示しよう
42
(Debug.Log(42);と解釈)
復習 : 変数
• 指しているものを書き換えることができる(「代入」)
num = 100;
numが指してるものを100にしよう
100
Debug.Log(num);
100
num(Debug.Log(100);と解釈)
「代入」という
復習 : 変数
• 「見る」と「書き換える」の組み合わせ
num = num + 10;
numが指してるものを10増やそう
110
Debug.Log(num);
(num = 100 + 10;と解釈)
110
num
100
num
復習 : 変数
• 演算子
• 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--
型
復習 : 型
• 「値の種類」みたいなもの
• 例えば
• 整数 int型 42 , -100
• 実数 float型 3.14f , -1f
• 文字列 string型 "Unity" , "Hello, C#!"
• 真偽値 bool型 true , false (YesとNo)
• 変数には型がある
• 「宣言」の時に型を決めている
• 型名 変数名 = 初期値;
• int num = 42;
復習 : 型
• 基本的に型が違うと代入できない
int num = 42;
numは整数の42としよう
num = "Unity";
エラーや!
stringをintに変換できへん!
string型の"Unity"を
int型の変数に代入しようとした
復習 : 型
• 演算すると型が変わったりする
• 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"
真偽値
復習 : 真偽値
• 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
復習 : 真偽値
• 「または」「かつ」が使える
• 「または」 一方でも true であれば true
• ○ || □ で表す
• true || false → true
• 「かつ」 両方が true であれば true
• ○ && □ で表す
• true && false → false
if , while , for
復習 : if , while , for
• プログラムで出来ることは 3種類
① 上から順番に実行する
② 条件が満たされている時処理Aを、満たされていない時処理Bを行う
③ 条件が満たされている間処理を繰り返す
• 方法
① 並べて書けば基本的に上から実行される
② if を使う
③ while を使う
① ③②
復習 : if
• 条件が満たされている時処理Aを、満たされていない時処理Bを行う
• 書き方
• 条件の部分には真偽値が入る
• else {} の部分はなくても大丈夫
if (条件) {
処理A;
} else {
処理B;
}
条件判定
処理A 処理B
条件がtrue 条件がfalse
復習 : 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の場合、下が実行
復習 : if
int num = 10;
if (num >= 5) {
Debug.Log("5以上やで");
} else {
Debug.Log("5未満やで");
}
(今は num は 10 だから
num >= 5 は true やねんな…)
5以上やで
復習 : 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以上かやで
復習 : 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);
復習 : while
• 条件が true の間処理を繰り返す
• 書き方
• 条件の部分には真偽値が入る
while (条件) {
処理;
} 条件判定
条件がtrue
処理
条件がfalse
復習 : while
処理
while (false) {
Debug.Log("処理");
}
• 条件がtrueの場合、処理を繰り返す • 条件がfalseの場合、処理は実行されない
while (true) {
Debug.Log("処理");
}
処理
処理
処理
処理
復習 : while int num = 0;
while (num <= 10) {
Debug.Log(num);
num += 1;
}
0
1
10
(今 numは11やな
num <= 10がfalseやから
繰り返しを終わるで)…
• 0から10を表示する
復習 : for
• while の特殊な書き方
ループに入る前に行う処理;
while (条件) {
メインの処理;
メインの処理の後に行う処理;
}
for (ループに入る前に行う処理; 条件; メインの処理の後に行う処理) {
メインの処理;
}
条件判定
条件がtrue
主処理
条件がfalse
前処理
後処理
復習 : for
• 例えば、この2つは同じ(両方とも0から10を表示する)
int num = 0;
while (num <= 10) {
Debug.Log(num);
num++;
}
for (int num = 0; num <= 10; num++) {
Debug.Log(num);
}
配列 , リスト
復習 : 配列 , リスト
• 複数の値を楽に扱うための手段
• これがないと…
• 複数の値の合計を求める場合 →
• 5個ならまだどうにかなるが…
• 個数が増えると大変!(変数を増やすのか?)
• 配列やリストがあれば簡単に書ける
• 何個になっても大丈夫
int a = 10;
int b = 5;
int c = 18;
int d = 431;
int e = 159;
int sum = a + b + c + d + e;
復習 : 配列 , リスト
• 配列も、リストも、同じ型のデータを並べたもの
• 違い
• 配列は要素の個数が固定(区切られた箱に値を入れるイメージ)
• リストはどんどん要素を追加、削除していける(値を鎖で繋げるイメージ)
• ちょっと宣言方法が特殊
• int[] array = new int[5];
• List<int> list = new List<int>();
型名[] 変数名 = new 型名[要素の個数];
List<型名> 変数名 = new List<型名>();
復習 : 配列 , リスト
• 宣言と同時に代入も可能
• 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]);
復習 : 配列 , リスト
• ○個目 の要素を書き換える場合
• 変数名[○] = 値 とする
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]);
復習 : 配列 , リスト
• 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」
関数
復習 : 関数
• 機能付きの箱みたいなもの
• 入り口があったり出口があったりする
• 入り口に入れるものを「引数」、出口から出てくるものを「戻り値」という
復習 : 関数
• 例①
• 「こんにちは」と表示するだけの関数 SeyHello
SeyHello
こんにちは
void SayHello() {
Debug.Log("こんにちは");
}
こんにちは
SayHello();
復習 : 関数
• 例②
• 戻り値として、string型の"こんにちは"を返す関数 GetHello
string GetHello() {
return "こんにちは";
}
GetHello
string
(GetHello()は"こんにちは"を返すんか)
Debug.Log(GetHello());
(Debug.Log("こんにちは");
ってことやな)
こんにちは
復習 : 関数
• 例③
• 引数として2つの整数を入力し、
• 入力された整数の和を表示する関数 SaySum
SaySum
和は~~やで
void SaySum(int a, int b) {
Debug.Log("和は" + (a + b) + "やで");
}
int int
(SaySumの中を見てみると……
Debug.Log("和は" + (1 + 5) + "やで");
ってことやから…)
SaySum(1, 5);
和は6やで
復習 : 関数
• 例④
• 引数として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やで
ここからUnity世界の話
GameObject と Component
GameObject と Component
• GameObject
• 世界の中にある「コア」みたいなもの
• それ自体は 触れない 見えない 何もしない
• ただ「そこにある」だけ
• Component
• GameObjectにくっつける「機能」みたいなもの
• 「触れる」という機能 Collider
• 「見える」という機能 Renderer
• 「音が鳴る」という機能 AudioSource
• その他、自作の機能(キーを押したら動くとか)

Contenu connexe

Tendances

普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語RShuyo Nakatani
 
静的型付け言語Python
静的型付け言語Python静的型付け言語Python
静的型付け言語Pythonkiki utagawa
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Ransui Iso
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)Hiro H.
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScriptbleis tift
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようHiro H.
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話bleis tift
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)Hiro H.
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
Python と型アノテーション
Python と型アノテーションPython と型アノテーション
Python と型アノテーションK Yamaguchi
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数Shinichi Kozake
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用までyoshihikoozaki5
 
Material
MaterialMaterial
Material_TUNE_
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らないdigitalghost
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカーTetsuya Morimoto
 

Tendances (20)

普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
静的型付け言語Python
静的型付け言語Python静的型付け言語Python
静的型付け言語Python
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
 
About Pointer
About PointerAbout Pointer
About Pointer
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
Python と型アノテーション
Python と型アノテーションPython と型アノテーション
Python と型アノテーション
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
 
Material
MaterialMaterial
Material
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカー
 

Similaire à Unity + C#講座①

Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Yukiko Kato
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~Takaaki Tanaka
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」Shin Ise
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会zakihaya
 
cp-5. 繰り返し計算
cp-5. 繰り返し計算cp-5. 繰り返し計算
cp-5. 繰り返し計算kunihikokaneko1
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜Hiromi Ishii
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門Tomo Mizoe
 
React+TypeScriptと格闘して得た知見
React+TypeScriptと格闘して得た知見React+TypeScriptと格闘して得た知見
React+TypeScriptと格闘して得た知見iPride Co., Ltd.
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPIDaisuke Igarashi
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくるphyllo
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Yukiko Kato
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと Haruka Ozaki
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 

Similaire à Unity + C#講座① (20)

Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会
 
cp-5. 繰り返し計算
cp-5. 繰り返し計算cp-5. 繰り返し計算
cp-5. 繰り返し計算
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
 
React+TypeScriptと格闘して得た知見
React+TypeScriptと格闘して得た知見React+TypeScriptと格闘して得た知見
React+TypeScriptと格闘して得た知見
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 
Processing
ProcessingProcessing
Processing
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 

Unity + C#講座①

  • 1. 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--
  • 13.
  • 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
  • 20. if , while , for
  • 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 • その他、自作の機能(キーを押したら動くとか)