Submit Search
Unity/CSharp 3
Download as PPTX, PDF
0 likes
294 views
T
tagawakiyoshi
長崎大学マルチメディア研究会「Unity/C#講座」のスライドです。
Engineering
Read more
1 of 34
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
More Related Content
PPTX
Unity/CSharp 1 - pptx
tagawakiyoshi
PPTX
Unity/CSharp 2
tagawakiyoshi
PDF
Win32 APIをてなずけよう
Kouji Matsui
PDF
de:code報告
Kouji Matsui
PDF
C#でわかる こわくないMonad
Kouji Matsui
PDF
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
PDF
UnityとC#で覗くVRの世界~はたらく.Net~
Mio Ku-tani
PDF
ROS体験コース
NEDOROBOMARC
Unity/CSharp 1 - pptx
tagawakiyoshi
Unity/CSharp 2
tagawakiyoshi
Win32 APIをてなずけよう
Kouji Matsui
de:code報告
Kouji Matsui
C#でわかる こわくないMonad
Kouji Matsui
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
UnityとC#で覗くVRの世界~はたらく.Net~
Mio Ku-tani
ROS体験コース
NEDOROBOMARC
What's hot
(12)
PDF
Wio Nodeを使った 高校生のIoTプログラミング体験
Hiroto Yamakawa
PDF
こんなに違う!Unityアプリケーション講座
Unity Technologies Japan K.K.
PDF
はんなりPython #45
hiroya akita
PDF
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
PPTX
若手がコミュニティを盛り上げよう!
Yuta Matsumura
PDF
普段はAndroid開発やってるけど、Tizenをさわってみたよ
Shuichi Takaya
PDF
Nespのコード生成
Kouji Matsui
PPTX
.NET Standard で SQLServer と接続してみた
m ishizaki
PDF
Async deepdive before de:code
Kouji Matsui
PDF
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
PPTX
Uno Platform か Blazor
Hiroyuki Mori
PDF
C# runs anywhere, make anything
Yuta Matsumura
Wio Nodeを使った 高校生のIoTプログラミング体験
Hiroto Yamakawa
こんなに違う!Unityアプリケーション講座
Unity Technologies Japan K.K.
はんなりPython #45
hiroya akita
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
若手がコミュニティを盛り上げよう!
Yuta Matsumura
普段はAndroid開発やってるけど、Tizenをさわってみたよ
Shuichi Takaya
Nespのコード生成
Kouji Matsui
.NET Standard で SQLServer と接続してみた
m ishizaki
Async deepdive before de:code
Kouji Matsui
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Uno Platform か Blazor
Hiroyuki Mori
C# runs anywhere, make anything
Yuta Matsumura
Ad
Similar to Unity/CSharp 3
(20)
PPTX
Unity ゲーム開発
Katsutoshi Makino
PPTX
C#メタプログラミング概略 in 2021
Atsushi Nakamura
PPTX
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
PPTX
C# で i phone ゲーム開発
Katsutoshi Makino
PPTX
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
PDF
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
PPTX
160531 IoT LT #15 @ 日本IBM
Toshiki Tsuboi
PDF
ALMツールたべくらべ
Kaoru NAKAMURA
PDF
.NET 7におけるBlazorの新機能
TomomitsuKusaba
PDF
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
PPTX
.NETラボ2021年10月 .NETの過去と現在
TomomitsuKusaba
PDF
Core Graphics on watchOS 2
Shuichi Tsutsumi
PPTX
大規模ゲーム開発における build 高速化と安定化
DeNA
KEY
Unityの夕べ in Fukuoka
Shinobu Izumi
PDF
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi OHIRA
PDF
Dockerで.NET Core 3.0 GUIアプリを動かす話
You&I
PDF
C#への招待
Yusuke Matsushita
PDF
Webプログラマの為のUnity入門
Yusuke Ando
PDF
.NET Coreとツール類の今
Yuki Igarashi
PDF
私とOSSの25年
MITSUNARI Shigeo
Unity ゲーム開発
Katsutoshi Makino
C#メタプログラミング概略 in 2021
Atsushi Nakamura
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
C# で i phone ゲーム開発
Katsutoshi Makino
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
160531 IoT LT #15 @ 日本IBM
Toshiki Tsuboi
ALMツールたべくらべ
Kaoru NAKAMURA
.NET 7におけるBlazorの新機能
TomomitsuKusaba
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
.NETラボ2021年10月 .NETの過去と現在
TomomitsuKusaba
Core Graphics on watchOS 2
Shuichi Tsutsumi
大規模ゲーム開発における build 高速化と安定化
DeNA
Unityの夕べ in Fukuoka
Shinobu Izumi
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi OHIRA
Dockerで.NET Core 3.0 GUIアプリを動かす話
You&I
C#への招待
Yusuke Matsushita
Webプログラマの為のUnity入門
Yusuke Ando
.NET Coreとツール類の今
Yuki Igarashi
私とOSSの25年
MITSUNARI Shigeo
Ad
More from tagawakiyoshi
(7)
PDF
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
tagawakiyoshi
PDF
Clang2018 class5
tagawakiyoshi
PDF
Clang2018 class4
tagawakiyoshi
PDF
Clang2018 class3
tagawakiyoshi
PDF
Clang2018 class2
tagawakiyoshi
PDF
ecml-2019-slide
tagawakiyoshi
PDF
C-Lang-Class1-SlideShare
tagawakiyoshi
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
tagawakiyoshi
Clang2018 class5
tagawakiyoshi
Clang2018 class4
tagawakiyoshi
Clang2018 class3
tagawakiyoshi
Clang2018 class2
tagawakiyoshi
ecml-2019-slide
tagawakiyoshi
C-Lang-Class1-SlideShare
tagawakiyoshi
Unity/CSharp 3
1.
Unity(C#)講座3 Version1.1 (2019.06.26)
2.
自己紹介 名前: Boltz 所属: 長崎経済大学3年 好きな性:
多態性(Polymorphism) UnityC#講座のスライドを クラウドとブロックチェーンとIoTで インタラクティブに生成する超高性能AI たまにスライド生成に失敗する, 助けてくれ!!!
3.
目次 •オブジェクト指向(初級) •2Dシューティング
4.
到達地点と概要
5.
前提条件 •環境: Unity 2018.4.0.f1 •
Unityはバージョンで挙動がかなり異なることも • 間違えずにダウンロードしてください • また、必須ではないがUnityHub経由の利用が便利 •エディタ: VisualStudio2017 • VimでC#を書いている人は我慢してくれ • 2019とかでも大して動作は変わらない(はず)
6.
前提条件 •C言語について理解がある • 構造化プログラミングの説明は速を上げます • C言語との差分を埋める説明の仕方をします •基本的な情報科学の知識がある •
基本情報技術者が体系的に学べていい感じ • ネットワーク, データベース(SQL), アルゴリズム, データ構造, ハードウェアの分野(大雑把)
7.
到達地点 •自分の思い描くゲームを作れるように なる • そのために、必要な処理を他から持ってくることが できる or
自分で実装できるようになる) • たとえ他から持ってきた処理でも、ある程度までは 中身が解読できる
8.
到達地点 •Unityチュートリアルをやっていく • ただしコードの写経はしないように • Unityの操作方法を学ぶためだけの教材ではない ので!!! •その前にC#のコードの意味を学習す る
9.
オブジェクト指向
10.
オブジェクト指向 • 変更に対して柔軟に対応するための仕組み • 頻繁に変更されそうな箇所をクラスに抽出 •
それでは具体的にどう(C#で)プログラミン グしたらいいの? • 「オブジェクト指向三原則」が存在する!! • ちなみにJavaやC++では実現方法や用語が異なり ます(プロパティとか)
11.
オブジェクト指向三原則 • 継承 • 上位クラスのもとに下位クラスを定義するとき、下位クラスに上位クラ スの属性が受け継がれる •
規格(インターフェース)を定義して、クラスに規格をもたせられる • カプセル化(実装の隠蔽) • オブジェクトの内部をブラックボックス化することで、使用者が内部構 造を知らなくてもよいようにすること • Getter / Setter (後述のプロパティ)はカプセル化を実現するための手段 なことに注意!! • ポリモーフィズム(多態性) • 同じメッセージを送っても受け手によって行われる操作が異なる
12.
継承(再掲) 年齢 わらう 真顔になる Person 細長さ RedLongPerson : Person 年齢(変数),
わらう(関数), 真 顔になる(関数)も利用でき る! 赤くなる
13.
MonoBehaviorクラスの継承(再掲) •Start, UpdateなどはMonoBehaviorで定義さ れている •Unityで使用できる便利な機能を使うため に引き継いでいる • StartやUpdateなど
14.
カプセル化 • 内部構造を知らないでも、適切なメッセー ジを送ることでそのクラスが使用できる • 以下にカプセル化を実現する要素を示す •
アクセス修飾子 • プロパティとフィールド
15.
アクセス修飾子 • その変数に外部のアセンブリ(クラスな ど)からアクセスできるかを規定する • public,
privateなどがある • 簡単にまとめたものを次のページに貼って いる
16.
アクセス修飾子(再掲) privateprotectedinternal public MethodM M MアセンブリA public アセンブリB M 別のクラス 派生クラス M
17.
プロパティ • 外からはメンバ変数のように見え、中では メソッドのように振る舞う • まず変数を小文字先頭で定義して (例:
int variable;) プロパティを同じ型で定義する (例: int Variable {get; set; })
18.
プロパティ • プロパティ(getter, setter)の実装例 •
基本的にデータを保持する変数を小文字先頭 (hitPoint)で、同じ型のプロパティを大文字先頭で 定義(HitPoint) • 自分に都合の悪い値が与えられたら、加工するプ ロパティを作ってみる • 最大HPを超えたHPが与えられると最大HPに直す • 0より低いHPが与えられると0に直す
19.
プロパティ
20.
プロパティ(参考動画) • https://twitter.com/MinoDriven/status/1142926621583 663104?s=20 • すべてにgetter
/ setter をつければいいものではない • データへアクセスできるかどうかも含め考えていこう public プロパティ名 { get{ ~~ } private set{ ~~ } }
21.
ポリモーフィズム(多態性) • 継承やインターフェース実装をしたクラスに同名 の関数を定義(上書き)できる • 引数の型によって関数のふるまいを変化させられ る(オーバーロード) •
クラスによって演算子(+とか-とか)の意味まで変 えられる • Unityでは<GetComponent>()でインターフェース を捕まえる方法をよく使う
22.
Dog / DogScript
(Class) + Bark() Cat / CatScript (Class) + Bark() Owner (Class) 動物たちに鳴いてほしいな!!
23.
Dog / DogScript
(Class) + Bark() Cat / CatScript (Class) + Bark() Owner (Class) Dog.Gameobject. GetComponent<DogScript>(). Bark() Cat.Gameobject. GetComponent<CatScript Bark()
24.
Dog / DogScript
(Class) + Bark() Cat / CatScript (Class) + Bark() Owner (Class) Dog.Gameobject. GetComponent<DogScript>(). Bark() Cat.Gameobject. GetComponent<CatScript Bark() 同じような関数をまとめられないかな...
25.
IAnimal (Interface) +Bark() Dog (Class)
Cat (Class) Owner (Class) 実装 実装
26.
IAnimal (Interface) +Bark() Dog (Class)
Cat (Class) Owner (Class) 同じ関数はIAnimal (Interface)に まとめました!! 実装 実装
27.
IAnimal (Interface) +Bark() Dog /
DogScript (Class) Cat / CatScript (Class) Owner (Class) 実装 実装 Dog.Gameobject. GetComponent<IAnimal>(). Bark() Cat.Gameobject. GetComponent<IAnima Bark()
28.
IAnimal (Interface) +Bark() Dog /
DogScript (Class) Cat / CatScript (Class) Owner (Class) 実装 実装 場にあるAnimalインタフェースを実装した オブジェクトをすべて鳴かせる: Bark()させる ことも可能!!
29.
ポリモーフィズム(多態性) • IPAの試験とか一般的な教本とかでは「抽象クラ ス」「親クラス」を継承した「子クラス」の関数 呼び出しなどが例に出されることも • ただ、is
aの関係にない継承や、多重継承が嫌われ ている観点からインタフェースで多態性を実現す ることが多い気がする
30.
オブジェクト指向(まとめ) • 最初はわからんかも!! • ただ、3要素「継承」「カプセル化」「ポ リモーフィズム」は頭の片隅に置くように •
classやオブジェクト同士をベタベタに結合 させると、後からの修正が大変になる • 基本情報技術者などで出てくる概念「モジュー ル結合度」について学習してみては
31.
余談(読み物): 軽いやつ • お前は絶望的にプログラミングに向いてないから諦め て刺身にタンポポ乗せる仕事でもやってろ
/ 古都こと : https://megalodon.jp/2019-0102-2318- 11/https://note.mu:443/kotofurumiya/n/n31d401fce78 2 • 一時期Twitterで話題になった, 現在は削除された • 色々なことが学べる良記事(変数名の付け方, エラーの読 み方, 学習の進め方など) • 多分本題はタイトルの通りではないと思われるが...
32.
余談(読み物): 重いやつ • オブジェクト指向デザインパターン •
頭のいい人の「問題」の解決策をパターン化した もの(大雑把な説明) • 「オブジェクト指向における再利用のためのデザ インパターン」が元となっている(文教図書館に ある) • 他のプログラミングの教本でもしばしば言及され るのでいくつか覚えておけばよさそう
33.
それではUnityをやる • https://unity3d.com/jp/learn/tutorials/projects/2 d-shooting-game-jp • 注意:
イントロダクションを読んで、素材を ダウンロードすること!! • https://unity3d.com/jp/learn/tutorials/projects/2d-shooting-game/getting- started?playlist=46524
34.
参考文献 マイケル・ディックハイザー, 三宅陽一郎ほか「ゲー ムプログラマーのためのC++」2011, SBクリエイティ ブ 五十嵐
祐貴, 岩永 信之「スラスラわかるC# 第2版」 2018, 翔泳社
Download