Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Unityでゲーム作りを学ぼう2014
第3回
C#入門編 その2
担当
spi8823
各自
● 適当にVisual Studioか、MonoDiveloperを
起動しておいてください
● 今回扱う「クラス」というものは
Unityではきちんと扱えないので
今回はUnityは使いません
● 上のエディタも単体で起動しておいてくだ...
前回のUniげーむ!
● 変数:値を保存しておく箱
● 関数:変数を使っていろいろする
● 繰り返し文:for~~で繰り返す
● 条件分岐:if~~で条件分岐
● 配列:変数がいっぱい
今日の予定
● 自己紹介(初参加の人がいれば)
● クラスとは?
● クラスの構造
● public, private
● クラスを作ってみよう!!
● ///
自己紹介
● 名前
● KMC-ID(あれば)
● KMCでどんなことをしたいのか
● KMCの外でどんなことをしているのか(趣味)
● 他に何かあれば
クラスとは?
クラスとは?
● ずばり、女子高生である
正確にいうと
● 例えば、「女子高生」や、「はさみ」など、
具体的なものを抽象化したもの
– 合ってるかどうかわからない・・・
● 要するに、ものの「設計図」だと思ってもらえ
ばいい
– っていう説明がよくされている
● 設計図を用いて、具体的...
クラスは設計図
● 具体的なものを生成するのに
必要な情報はどんなものがあるのか?
– どんな変数を持っているのか
● その情報で具体的なものを作った時に
それはどのような振る舞いをするのか
– どんな関数を持っているのか
● というのがここで...
女子高生で考えてみよう
● 「女子高生」クラスがあったとしましょう
● 女子高生の設計図とはどのようなものでしょ
う?
● 例えば、女子高生である、「涼宮ハルヒ」を
生成したいとします
「涼宮ハルヒ」を作る
● ハルヒを作るのに必要な情報(変数)は何か?
「涼宮ハルヒ」を作る
● ハルヒを作るのに必要な情報(変数)は何か?
– 名前
– 年齢
– 性格
– 服装
– おっぱい
– バスト
– ウェスト
– ヒップ   etc.....
「涼宮ハルヒ」を作る
● ハルヒを作るのに必要な情報(変数)は何か?
– 名前 : 文字列型
– 年齢 : 整数型
– 性格 : 性格型、もしくは列挙型(のちほど説
明)
– 服装 : 服装型、もしくは列挙型
– おっぱい : 整数型、もしくは...
「涼宮ハルヒ」を作る
● ハルヒは一体どんな行動(関数)をとるのか?
「涼宮ハルヒ」を作る
● ハルヒは一体どんな行動(関数)をとるのか?
– 走る
– しゃべる
– わめく
– 思いつく
– 命令する
「涼宮ハルヒ」を作る
● ハルヒは一体どんな行動(関数)をとるのか?
– 走る : void Run()
– しゃべる : void Speak(string 内容, 人 話し相手)
– わめく : void Shout(string 内容, ...
クラスの構造
● クラス名{
クラスが持っている変数たち(メンバ変数)
 初期化する特別な関数(後述)
 クラス特有の関数たち(メンバ関数)
 
}
初期化する特別な関数とは?
● そのクラスから具体的なもの(インスタンスと
呼ぶ)
を生成するときに、
どんなものを作るのか、という情報を言ってあ
げないといけない
● そのために使う関数を「コンストラクタ」と言
います
● これは、そのクラス...
概念図
クラスについての
いろいろな情報が
書かれている
クラス
古河渚
毛利蘭
涼宮ハルヒ
初期化
インスタン
ス
女子高生の場合
● public(後述) JK{
string Name;
int Age;
Character character;
...
JK(string name, int age, …..){
….
}
void Run(){}
v...
早速クラスを作ってみたい
● その前にpublicとかいうものの正体を
public, private
● これらの意味は見てのとおり
– 公的な、私的な、という意味です
● どういう風に使うかというと
それが書かれているクラスや変数、関数に
どこからならアクセスできるのかを定める
● publicならどこからでも...
作ってみよう
● エディタの
ファイル→新規作成→プロジェクト
→コンソールアプリケーション(適当な名前
を)
● Program.csというファイルができて、その中に
static void Main(~~)というのがある
– C#のプログラ...
クラスを作る
● class Program{}の外に
public class JoshiKosei{ ~~ }と書き始めよう
● ~~の部分にクラスの内容を書いていく
メンバ変数の宣言
● そのクラスが持っておきたい変数(メンバ変
数)は
class ~~{}でくくった直下に宣言します
コンストラクタを書く
● 初期化のためのコンストラクタは、
返り値の型とか書かない、
そのクラスの名前を持った関数っていう感じで
書く
thisってなんぞや?
● this.~~と変数を指定しているのは
インスタンスを作った時に
指定しているのは自分自身ですよ、ということ
● 実は書かなくても自動でそう認識される
– 書いた方がわかりやすいこともあるし
冗長になることもある
メンバ関数の定義
● これもclass{}でくくった直下に定義
わかってきたかな?
● 早速今作った女子高生クラスの
インスタンスを作ってみよう
newでインスタンスを作る
● ここにかいてあるのは
● (クラス名)型の変数を宣言し、それと同時に
● new コンストラクタ(~~)で、
~~の情報を持った
インスタンスを生成し、
● それを宣言した変数に代入している
インスタンスに関数を実行させる
● そのあとに
Haruhi.Speak(); としているのは、
「Haruhi」という変数の中に入っている
インスタンスに対して、
● Speak(); という関数を実行しなさいと言って
いる
● これによって...
.
● この際、変数名.メンバ関数名となっている
が、
この「.」は「の」とか、「of」的なものだと
思ってもらえばOK
– ハルヒの喋るという行為をしろ、といった意味
● もちろん、変数名.メンバ変数名とすることで
そのインスタンスのメンバ変...
再登場
● このようにして、外部からインスタンスの中身
に
アクセスされるときに、
「外部からは操作してほしくない!」という
変数や関数があったとします
● そういう時に、
先ほどとりあえずpublicにと言っていた部分を
● privateに...
実装してみよう
● Speak関数の引数に整数をとって
その整数によって年齢だとかバストだとかを
言ったりするようにしてみそ
● 3分で
● その前にswitch文の説明をちょろっと
– switch(~~){
case oo: (~~ がoo...
列挙型の説明
● ここで例えば、
インスタンスに性格を変数として持たせたいと
する
● 性格は何で表すのか???
– 数字で表す?
● 1のときは「明るい」など
● すごくわかりにくいです・・・
– 新たに性格型のクラスを作る?
● マンドク...
enum
● を使えば実態は数値だけど、わかりやすく表せ
る
● 種類だけをいっぱい用意したいときに便利
● 定義はこうする
enumの使い方
● 適当にメンバ変数に性格を足して
初期化するように改造しといてちょ~
鯖 読子ちゃん
● 突然ですが、外からメンバ変数を見られる際
に、
メンバ変数そのものではなく、
なにか操作したものを渡したいとき
● っていうのがあったとします
● 例えば、女子高生の鯖読子ちゃんは
実は37才なのですがとある事情で
高校生と...
プロパティ
● そうときにプロパティというものが使えます
● 「実装の隠蔽」といいます
● まず、普通に「age」というメンバ変数を用意
外から見えるとまずいのでprivateで
– 頭文字は小文字なのが一般的
● そして次のように書く
● p...
こうすると
● int n = Yomiko.Age; とすると
nは17に、
● Yomiko.Age = 56; とかすると
setがprivateなのでエラーになる
– この代入のときの「56」などが
先ほどのset{}の部分の「valu...
性的なクラス、変数、関数
● 今までやってきたことは「動的な」ことです
● 「動的な」ものとは、インスタンスによって
それぞれ異なっているもの、と思ってください
● 「動的な」があれば、「静的な」もあるわけで
静的とは?
● インスタンスが異なっても、その動作を
変えないクラスや変数、関数のことです
● そのようなものには「static」キーワードをつ
けます
● 例えば、女子高生の場合、
「性別」の変数はどのインスタンスにも関係な
く、
「女」であ...
いまはあんまり使わないね
● しかし、プログラミングをしていくと
後々、重要だということが分かります
● Unityでもstaticな関数を用意しておくと
インスタンスを作らなくても呼び出せて
超便利~だったり
クラスについて何か質問
● はありますか?
● 今のうちにじゃんじゃん質問してください
では
● これにてクラスの話は今のところ終わりです
● 継承やらインターフェースやらは
そのうちしゃべります(多分)
来週の予定
● いよいよ、コードを書きつつ、
実際にUnityでいろいろしていきます
● 次回(5月17日)の予定は
– Cubeの出し方、そしてその動かし方
– 物理演算させる、当たり判定をつける
– エディタ上で変数をいじって遊ぶ
– Pr...
新歓コンパ
● 5月24日にあります
● 食べます
● 新入生は無料です
● wikiにページがあるので、
自分の名前のところに○×をつけておいてくださ
い
– 参加する如何にかかわらず
● 参加してね!!
はぁ~、ちかれた
Unity入門講座その3
Próxima SlideShare
Cargando en…5
×

Unity入門講座その3

KMCというサークルで新入生向けに作ったスライドです
今回はC#入門編その2です
今回は「クラス」というものについてできるだけ初心者にわかりやすく解説しました
次回の分はhttp://www.slideshare.net/spi8823/unity-34817063です
次回からUnityを触って行きます

Audiolibros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Unity入門講座その3

  1. 1. Unityでゲーム作りを学ぼう2014 第3回 C#入門編 その2 担当 spi8823
  2. 2. 各自 ● 適当にVisual Studioか、MonoDiveloperを 起動しておいてください ● 今回扱う「クラス」というものは Unityではきちんと扱えないので 今回はUnityは使いません ● 上のエディタも単体で起動しておいてください
  3. 3. 前回のUniげーむ! ● 変数:値を保存しておく箱 ● 関数:変数を使っていろいろする ● 繰り返し文:for~~で繰り返す ● 条件分岐:if~~で条件分岐 ● 配列:変数がいっぱい
  4. 4. 今日の予定 ● 自己紹介(初参加の人がいれば) ● クラスとは? ● クラスの構造 ● public, private ● クラスを作ってみよう!! ● ///
  5. 5. 自己紹介 ● 名前 ● KMC-ID(あれば) ● KMCでどんなことをしたいのか ● KMCの外でどんなことをしているのか(趣味) ● 他に何かあれば
  6. 6. クラスとは?
  7. 7. クラスとは? ● ずばり、女子高生である
  8. 8. 正確にいうと ● 例えば、「女子高生」や、「はさみ」など、 具体的なものを抽象化したもの – 合ってるかどうかわからない・・・ ● 要するに、ものの「設計図」だと思ってもらえ ばいい – っていう説明がよくされている ● 設計図を用いて、具体的なものを生成する ● 生成されたものを(クラス名)型の(変数名) と呼ぶ
  9. 9. クラスは設計図 ● 具体的なものを生成するのに 必要な情報はどんなものがあるのか? – どんな変数を持っているのか ● その情報で具体的なものを作った時に それはどのような振る舞いをするのか – どんな関数を持っているのか ● というのがここでいう設計図のことである
  10. 10. 女子高生で考えてみよう ● 「女子高生」クラスがあったとしましょう ● 女子高生の設計図とはどのようなものでしょ う? ● 例えば、女子高生である、「涼宮ハルヒ」を 生成したいとします
  11. 11. 「涼宮ハルヒ」を作る ● ハルヒを作るのに必要な情報(変数)は何か?
  12. 12. 「涼宮ハルヒ」を作る ● ハルヒを作るのに必要な情報(変数)は何か? – 名前 – 年齢 – 性格 – 服装 – おっぱい – バスト – ウェスト – ヒップ   etc.....
  13. 13. 「涼宮ハルヒ」を作る ● ハルヒを作るのに必要な情報(変数)は何か? – 名前 : 文字列型 – 年齢 : 整数型 – 性格 : 性格型、もしくは列挙型(のちほど説 明) – 服装 : 服装型、もしくは列挙型 – おっぱい : 整数型、もしくは文字型 – バスト : 整数型 – ウェスト : 整数型 – ヒップ : 整数型
  14. 14. 「涼宮ハルヒ」を作る ● ハルヒは一体どんな行動(関数)をとるのか?
  15. 15. 「涼宮ハルヒ」を作る ● ハルヒは一体どんな行動(関数)をとるのか? – 走る – しゃべる – わめく – 思いつく – 命令する
  16. 16. 「涼宮ハルヒ」を作る ● ハルヒは一体どんな行動(関数)をとるのか? – 走る : void Run() – しゃべる : void Speak(string 内容, 人 話し相手) – わめく : void Shout(string 内容, 人 相手) – 思いつく : 内容 conceive(きっかけ 何か) – 命令する : void order(内容) – などなど。。。
  17. 17. クラスの構造 ● クラス名{ クラスが持っている変数たち(メンバ変数)  初期化する特別な関数(後述)  クラス特有の関数たち(メンバ関数)   }
  18. 18. 初期化する特別な関数とは? ● そのクラスから具体的なもの(インスタンスと 呼ぶ) を生成するときに、 どんなものを作るのか、という情報を言ってあ げないといけない ● そのために使う関数を「コンストラクタ」と言 います ● これは、そのクラス名が関数の名前になった 特別な関数で、引数にはクラスが持つべき 情報を与える ● このようにして、変数の初めの状態を決めるこ
  19. 19. 概念図 クラスについての いろいろな情報が 書かれている クラス 古河渚 毛利蘭 涼宮ハルヒ 初期化 インスタン ス
  20. 20. 女子高生の場合 ● public(後述) JK{ string Name; int Age; Character character; ... JK(string name, int age, …..){ …. } void Run(){} void Speak(){} …... }
  21. 21. 早速クラスを作ってみたい ● その前にpublicとかいうものの正体を
  22. 22. public, private ● これらの意味は見てのとおり – 公的な、私的な、という意味です ● どういう風に使うかというと それが書かれているクラスや変数、関数に どこからならアクセスできるのかを定める ● publicならどこからでもアクセスできるので、 とりあえずはpublicを使っておこう
  23. 23. 作ってみよう ● エディタの ファイル→新規作成→プロジェクト →コンソールアプリケーション(適当な名前 を) ● Program.csというファイルができて、その中に static void Main(~~)というのがある – C#のプログラムはこの関数から動き始める ● Main()があるのも Programというclassであることに注目
  24. 24. クラスを作る ● class Program{}の外に public class JoshiKosei{ ~~ }と書き始めよう ● ~~の部分にクラスの内容を書いていく
  25. 25. メンバ変数の宣言 ● そのクラスが持っておきたい変数(メンバ変 数)は class ~~{}でくくった直下に宣言します
  26. 26. コンストラクタを書く ● 初期化のためのコンストラクタは、 返り値の型とか書かない、 そのクラスの名前を持った関数っていう感じで 書く
  27. 27. thisってなんぞや? ● this.~~と変数を指定しているのは インスタンスを作った時に 指定しているのは自分自身ですよ、ということ ● 実は書かなくても自動でそう認識される – 書いた方がわかりやすいこともあるし 冗長になることもある
  28. 28. メンバ関数の定義 ● これもclass{}でくくった直下に定義
  29. 29. わかってきたかな? ● 早速今作った女子高生クラスの インスタンスを作ってみよう
  30. 30. newでインスタンスを作る ● ここにかいてあるのは ● (クラス名)型の変数を宣言し、それと同時に ● new コンストラクタ(~~)で、 ~~の情報を持った インスタンスを生成し、 ● それを宣言した変数に代入している
  31. 31. インスタンスに関数を実行させる ● そのあとに Haruhi.Speak(); としているのは、 「Haruhi」という変数の中に入っている インスタンスに対して、 ● Speak(); という関数を実行しなさいと言って いる ● これによって、 インスタンスが、それぞれ自分に特有の情報を 使って、クラスで設計された通りに行動してい る
  32. 32. . ● この際、変数名.メンバ関数名となっている が、 この「.」は「の」とか、「of」的なものだと 思ってもらえばOK – ハルヒの喋るという行為をしろ、といった意味 ● もちろん、変数名.メンバ変数名とすることで そのインスタンスのメンバ変数を 呼び出すこともできる – ハルヒの年齢を呼び出せ、など
  33. 33. 再登場 ● このようにして、外部からインスタンスの中身 に アクセスされるときに、 「外部からは操作してほしくない!」という 変数や関数があったとします ● そういう時に、 先ほどとりあえずpublicにと言っていた部分を ● privateに変えます ● するとどうでしょう、Main()で実行する部分か らは 見えなくなりました!
  34. 34. 実装してみよう ● Speak関数の引数に整数をとって その整数によって年齢だとかバストだとかを 言ったりするようにしてみそ ● 3分で ● その前にswitch文の説明をちょろっと – switch(~~){ case oo: (~~ がooのときはここからbreakまで実 行) ~~~~~~~~   (何かしたいこと) break; case xx:  (~~ がxxのときはここを実行) ~~~~~
  35. 35. 列挙型の説明 ● ここで例えば、 インスタンスに性格を変数として持たせたいと する ● 性格は何で表すのか??? – 数字で表す? ● 1のときは「明るい」など ● すごくわかりにくいです・・・ – 新たに性格型のクラスを作る? ● マンドクセ ● そこで列挙型ですよ
  36. 36. enum ● を使えば実態は数値だけど、わかりやすく表せ る ● 種類だけをいっぱい用意したいときに便利 ● 定義はこうする
  37. 37. enumの使い方
  38. 38. ● 適当にメンバ変数に性格を足して 初期化するように改造しといてちょ~
  39. 39. 鯖 読子ちゃん ● 突然ですが、外からメンバ変数を見られる際 に、 メンバ変数そのものではなく、 なにか操作したものを渡したいとき ● っていうのがあったとします ● 例えば、女子高生の鯖読子ちゃんは 実は37才なのですがとある事情で 高校生として生活を送っています ● Ageには37が代入されているのですが、 年齢を聞かれた時はそこから20を引いて 相手に教えます
  40. 40. プロパティ ● そうときにプロパティというものが使えます ● 「実装の隠蔽」といいます ● まず、普通に「age」というメンバ変数を用意 外から見えるとまずいのでprivateで – 頭文字は小文字なのが一般的 ● そして次のように書く ● public int Age { private set{ this.age = value; } get{ return this.age – 20; } }
  41. 41. こうすると ● int n = Yomiko.Age; とすると nは17に、 ● Yomiko.Age = 56; とかすると setがprivateなのでエラーになる – この代入のときの「56」などが 先ほどのset{}の部分の「value」になっている ● C#では、プログラムの堅牢性を高めるために プロパティを用いた書き方が推奨されている
  42. 42. 性的なクラス、変数、関数 ● 今までやってきたことは「動的な」ことです ● 「動的な」ものとは、インスタンスによって それぞれ異なっているもの、と思ってください ● 「動的な」があれば、「静的な」もあるわけで
  43. 43. 静的とは? ● インスタンスが異なっても、その動作を 変えないクラスや変数、関数のことです ● そのようなものには「static」キーワードをつ けます ● 例えば、女子高生の場合、 「性別」の変数はどのインスタンスにも関係な く、 「女」であるので ● public static Gender gender = Gender.Female; – 列挙型だ!! ● と書きます
  44. 44. いまはあんまり使わないね ● しかし、プログラミングをしていくと 後々、重要だということが分かります ● Unityでもstaticな関数を用意しておくと インスタンスを作らなくても呼び出せて 超便利~だったり
  45. 45. クラスについて何か質問 ● はありますか? ● 今のうちにじゃんじゃん質問してください
  46. 46. では ● これにてクラスの話は今のところ終わりです ● 継承やらインターフェースやらは そのうちしゃべります(多分)
  47. 47. 来週の予定 ● いよいよ、コードを書きつつ、 実際にUnityでいろいろしていきます ● 次回(5月17日)の予定は – Cubeの出し方、そしてその動かし方 – 物理演算させる、当たり判定をつける – エディタ上で変数をいじって遊ぶ – Prefabを使う – などなど
  48. 48. 新歓コンパ ● 5月24日にあります ● 食べます ● 新入生は無料です ● wikiにページがあるので、 自分の名前のところに○×をつけておいてくださ い – 参加する如何にかかわらず ● 参加してね!!
  49. 49. はぁ~、ちかれた

×