Suche senden
Hochladen
Unity/CSharp 3
•
Als PPTX, PDF herunterladen
•
0 gefällt mir
•
288 views
T
tagawakiyoshi
Folgen
長崎大学マルチメディア研究会「Unity/C#講座」のスライドです。
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 34
Jetzt herunterladen
Empfohlen
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptx
tagawakiyoshi
Unity/CSharp 2
Unity/CSharp 2
tagawakiyoshi
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
de:code報告
de:code報告
Kouji Matsui
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
UnityとC#で覗くVRの世界~はたらく.Net~
UnityとC#で覗くVRの世界~はたらく.Net~
Mio Ku-tani
ROS体験コース
ROS体験コース
NEDOROBOMARC
Empfohlen
Unity/CSharp 1 - pptx
Unity/CSharp 1 - pptx
tagawakiyoshi
Unity/CSharp 2
Unity/CSharp 2
tagawakiyoshi
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
de:code報告
de:code報告
Kouji Matsui
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
UnityとC#で覗くVRの世界~はたらく.Net~
UnityとC#で覗くVRの世界~はたらく.Net~
Mio Ku-tani
ROS体験コース
ROS体験コース
NEDOROBOMARC
Wio Nodeを使った 高校生のIoTプログラミング体験
Wio Nodeを使った 高校生のIoTプログラミング体験
Hiroto Yamakawa
こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座
Unity Technologies Japan K.K.
はんなりPython #45
はんなりPython #45
hiroya akita
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
若手がコミュニティを盛り上げよう!
若手がコミュニティを盛り上げよう!
Yuta Matsumura
普段はAndroid開発やってるけど、Tizenをさわってみたよ
普段はAndroid開発やってるけど、Tizenをさわってみたよ
Shuichi Takaya
Nespのコード生成
Nespのコード生成
Kouji Matsui
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
m ishizaki
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Uno Platform か Blazor
Uno Platform か Blazor
Hiroyuki Mori
C# runs anywhere, make anything
C# runs anywhere, make anything
Yuta Matsumura
Unity ゲーム開発
Unity ゲーム開発
Katsutoshi Makino
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
C# で i phone ゲーム開発
C# で i phone ゲーム開発
Katsutoshi Makino
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
Toshiki Tsuboi
ALMツールたべくらべ
ALMツールたべくらべ
Kaoru NAKAMURA
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
TomomitsuKusaba
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
Weitere ähnliche Inhalte
Was ist angesagt?
Wio Nodeを使った 高校生のIoTプログラミング体験
Wio Nodeを使った 高校生のIoTプログラミング体験
Hiroto Yamakawa
こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座
Unity Technologies Japan K.K.
はんなりPython #45
はんなりPython #45
hiroya akita
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
若手がコミュニティを盛り上げよう!
若手がコミュニティを盛り上げよう!
Yuta Matsumura
普段はAndroid開発やってるけど、Tizenをさわってみたよ
普段はAndroid開発やってるけど、Tizenをさわってみたよ
Shuichi Takaya
Nespのコード生成
Nespのコード生成
Kouji Matsui
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
m ishizaki
Async deepdive before de:code
Async deepdive before de:code
Kouji Matsui
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Uno Platform か Blazor
Uno Platform か Blazor
Hiroyuki Mori
C# runs anywhere, make anything
C# runs anywhere, make anything
Yuta Matsumura
Was ist angesagt?
(12)
Wio Nodeを使った 高校生のIoTプログラミング体験
Wio Nodeを使った 高校生のIoTプログラミング体験
こんなに違う!Unityアプリケーション講座
こんなに違う!Unityアプリケーション講座
はんなりPython #45
はんなりPython #45
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
若手がコミュニティを盛り上げよう!
若手がコミュニティを盛り上げよう!
普段はAndroid開発やってるけど、Tizenをさわってみたよ
普段はAndroid開発やってるけど、Tizenをさわってみたよ
Nespのコード生成
Nespのコード生成
.NET Standard で SQLServer と接続してみた
.NET Standard で SQLServer と接続してみた
Async deepdive before de:code
Async deepdive before de:code
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Uno Platform か Blazor
Uno Platform か Blazor
C# runs anywhere, make anything
C# runs anywhere, make anything
Ähnlich wie Unity/CSharp 3
Unity ゲーム開発
Unity ゲーム開発
Katsutoshi Makino
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
C# で i phone ゲーム開発
C# で i phone ゲーム開発
Katsutoshi Makino
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
Toshiki Tsuboi
ALMツールたべくらべ
ALMツールたべくらべ
Kaoru NAKAMURA
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
TomomitsuKusaba
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
TomomitsuKusaba
Core Graphics on watchOS 2
Core Graphics on watchOS 2
Shuichi Tsutsumi
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
Unityの夕べ in Fukuoka
Unityの夕べ in Fukuoka
Shinobu Izumi
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi IWANAGA
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
You&I
C#への招待
C#への招待
Yusuke Matsushita
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
Yusuke Ando
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
Shin Ise
.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
Ähnlich wie Unity/CSharp 3
(20)
Unity ゲーム開発
Unity ゲーム開発
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
C# で i phone ゲーム開発
C# で i phone ゲーム開発
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
ALMツールたべくらべ
ALMツールたべくらべ
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
Core Graphics on watchOS 2
Core Graphics on watchOS 2
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
Unityの夕べ in Fukuoka
Unityの夕べ in Fukuoka
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
C#への招待
C#への招待
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
.NET Coreとツール類の今
.NET Coreとツール類の今
Mehr von tagawakiyoshi
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
tagawakiyoshi
Clang2018 class5
Clang2018 class5
tagawakiyoshi
Clang2018 class4
Clang2018 class4
tagawakiyoshi
Clang2018 class3
Clang2018 class3
tagawakiyoshi
Clang2018 class2
Clang2018 class2
tagawakiyoshi
ecml-2019-slide
ecml-2019-slide
tagawakiyoshi
C-Lang-Class1-SlideShare
C-Lang-Class1-SlideShare
tagawakiyoshi
Mehr von tagawakiyoshi
(7)
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
長崎大学グラフィックデザインセミナー: グラフィックデザインについて
Clang2018 class5
Clang2018 class5
Clang2018 class4
Clang2018 class4
Clang2018 class3
Clang2018 class3
Clang2018 class2
Clang2018 class2
ecml-2019-slide
ecml-2019-slide
C-Lang-Class1-SlideShare
C-Lang-Class1-SlideShare
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, 翔泳社
Jetzt herunterladen