Unity(C#)講座
Version1.2 (2019.06.25)
自己紹介
名前: Boltz
所属: 長崎経済大学3年
好きな性: 多態性(Polymorphism)
UnityC#講座のスライドを
クラウドとブロックチェーンとIoTで
インタラクティブに生成する超高性能AI
たまにスライド生成に失敗する, 助けてくれ!!!
目次
•概要と目的
•Unityにプログラムを書くには
•C#について
•C#文法事項の学習(別資料)
•演習
到達地点と概要
前提条件
•環境: Unity 2018.4.0.f1
• Unityはバージョンで挙動がかなり異なることも
• 間違えずにダウンロードしてください
• また、必須ではないがUnityHub経由の利用が便利
•エディタ: VisualStudio2017
• VimでC#を書いている人は我慢してくれ
• 2019とかでも大して動作は変わらない(はず)
前提条件
•C言語について理解がある
• 構造化プログラミングの説明は速を上げます
• C言語との差分を埋める説明の仕方をします
•基本的な情報科学の知識がある
• 基本情報技術者が体系的に学べていい感じ
• ネットワーク, データベース(SQL), アルゴリズム,
データ構造, ハードウェアの分野(大雑把)
到達地点
•自分の思い描くゲームを作れるように
なる
• そのために、必要な処理を他から持ってくることが
できる or 自分で実装できるようになる)
• たとえ他から持ってきた処理でも、ある程度までは
中身が解読できる
到達地点
•Unityチュートリアルをやっていく
• ただしコードの写経はしないように
• Unityの操作方法を学ぶためだけの教材ではない
ので!!!
•その前にC#のコードの意味を学習す
る
講座の流れ
•C#の書き方
•玉転がしゲーム
•シューティングゲーム
•リズムゲーム(?)
Unityにプログラムを
書くには
新規作成を押す
基本的に3Dでやっていきます
ヒエラルキー右クリック
>Create Empty
作られたゲームオブジェクトが対象のインスペク
タで、
Add Component > New Script
Scriptが作られました
(Assetフォルダに追加された + GameObject
にアタッチされた)
Script右クリック
>Edit Script
VSが開いてコードをいじれます
Windows版
Mac版
まとめ
•UnityでC#を書くまでの過程を紹
介した
•Unityシーン上のオブジェクトにス
クリプトがアタッチされている必
要がある
補足: Save
Ctrl+Sで保存しよう!大事!
C#について
C#とは
•C++++だよ(暴論)
•C言語に色々加わったものという認識
で多分大丈夫
•オブジェクト指向言語
• ObjectとObject間の関係を記述する
C#とは
•C言語と違う点
•C言語と似ている点
•実際のプログラム
C言語と違う点
こいつらは何!!?
1
2
3
4
C言語と違う点
•1. Usingディレクティブ
• プログラムを書く上での補助機能
• 今は気にしないで大丈夫
•2. Class Practice
• {}内部がPractice Classの内容と定義して
いる
• : MonoBehaviorについてはあとで説明
C言語と違う点
•3. 戻り値voidの Start関数
• Update前に最初の1回だけ実行される
• 実行してほしい内容を中に書く
•4.戻り値voidの Update関数
• 1フレームに1回実行される
• 実行してほしい内容を中に書く
• 今はとりあえず内部がずっと無限ループし
てるみたいなイメージで...?
1回だけ実行させてみよう
• Debug.LogはUnityコンソールに文章を出力する
関数
• Debugはクラス名, Logは関数名
• Debugクラスの中のLog関数を呼んでる
• 引数はobject型(intとかstring含む)
プログラムを書き終わったら|>Unityにアタッチ
実行して問題なかったら■で停止しよう
オッ
オッ2
補足: 文字列の連結と計算
• Debug.Logの中で計算してみよう
• 演算子は基本的にCと同じ感覚で使える
• (構造体アクセスの)アロー演算子はない
けど
補足: 文字列の連結と計算
• 文字列リテラル(""部分)後に+演算子を配置した
ら、後に続く要素と連結される
• 続けて連結できる
• Debug.Log("なるほど" + "シベリア" + "送りだ");
クラスとは
•C言語にはなかった機能
• C++(C with classes)にはある
•なぜクラスがあるのか?
•歴史的経緯が存在する
C言語のころまで
変数
関数(メソッド)
関数(メソッド)
変数
変数
関数(メソッド)
関連性のあるものをまとめた
変数
関数(メソッド)
変数
変数
関数(メソッド)
関数(メソッド)
クラスA クラスB
オブジェクト指向(C#)
変数
関数(メソッド)
変数
変数
関数(メソッド)
関数(メソッド)
クラスA クラスB
具体的な例
年齢
吠える
年齢
にゃ〜んする
かみつく
いぬ ねこ
かわいい度
クラスとは
•関数や変数などはクラスに内包される
ようになった
•クラスは設計図、インスタンスとして
実体化させて使用する
実体をつくる
年齢
わらう
真顔になる
Person
Person perA = new person();
Person perB = new person();
メモリ空間
継承で機能を引きつぐ
年齢
わらう
真顔になる
Person
細長さ
RedLongPerson : Person
年齢(変数), わらう(関数), 真
顔になる(関数)も利用でき
る!
赤くなる
MonoBehaviorクラスの継承
•Start, UpdateなどはMonoBehaviorで定義さ
れている
•Unityで使用する便利な機能を使うために
引き継いでいる
• StartやUpdateなど
簡単なアクセス修飾子
privateprotectedinternal
public
MethodM
M
MアセンブリA
public
アセンブリB
M
別のクラス 派生クラス
M
クラスまとめ
•関数や変数などはクラスに内包される
•クラスはインスタンスで実体化させる
•クラスは継承ができる
• 実装における約束を定めたインター
フェースの追加も継承と同じ手順
•アクセス修飾子が存在する
C言語と似ている点
•変数や関数周りの文法
•if文の文法(ちょっとだけ違いあり)
•基本的なswitch-case文とラベル
•for文やwhile文の文法
変数や関数周りの文法
• 型名 変数名 = 代入; ができる
• 関数名(引数...); ができる
• 関数呼び出しは先ほどやった
• public, privateなどおまけがつくことはある
けど、基本的に一緒
変数についての学習
変数についての学習
クラスのほかにも色々な型が
組み込み型 ユーザー定義型 他の型から合成
値型
Value Type
単純型
(int, bool, float)
構造体(struct)
列挙型(enum)
Null許容型
参照型
Reference Type
文字列型(string)
オブジェクト型
(object)
クラス
インタフェース
デリゲート
配列
C#に登場する型
組み込み型 ユーザー定義型 他の型から合成
値型
Value Type
単純型
(int, bool, float)
構造体(struct)
列挙型(enum)
Null許容型
参照型
Reference Type
文字列型(string)
オブジェクト型
(object)
クラス
インタフェース
デリゲート
配列
C言語と似ている点
•変数や関数周りの文法
•if文の文法(判断するのはbool型だけど)
•基本的なswitch-case文とラベル
•for文やwhile文の文法
C#文法事項の学習
•KMC2017 C#でゲームを作ろう 1
•System.Console.WriteLineはDebug.Logに
置き換えて読む
•System.Console.ReadLineはUnityの場合
別の方法で入力した方がいい
• 手っ取り早いのはコード上で変数に直接代
入か
コーディング練習
•ABC 089 A問題
https://atcoder.jp/contests/abc089/tasks/abc089_a
•ABC 089 B問題
https://atcoder.jp/contests/abc089/tasks/abc089_b
•どちらもC#(Mono4.6.2)で解こう
次回
•Unity2018.0.f1を確実にインストール
してくるように
• Unityのユーザー登録もお願いします
•Visual Studio(Codeではない)の有効かと
ユーザー認証を済ませておく
• 認証は大学のアカウントでいいと思う
参考文献
• 大槻 有一郎「UnityではじめるC#」2016,エ
ムディエヌコーポレーション
• 五十嵐 祐貴, 岩永 信之「スラスラわかるC#
第2版」2018, 翔泳社

Unity/CSharp 1 - pptx