Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unityとゲームプログラムの基本的な構造について / Unity and Game Prog...
Search
sotanmochi
August 03, 2020
Programming
0
700
Unityとゲームプログラムの基本的な構造について / Unity and Game Programming Basic Patterns
sotanmochi
August 03, 2020
Tweet
Share
More Decks by sotanmochi
See All by sotanmochi
URP/HDRPを使ったVRM対応アプリの開発方法 / VRM Importer Extension
sotanmochi
0
1.5k
画像処理から始めるコンピュートシェーダ / Introduction to Image Processing using Compute Shader
sotanmochi
2
2.2k
Diminished Reality 入門 / Introduction to Diminished Reality
sotanmochi
2
8.3k
Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader
sotanmochi
2
3.3k
MagicOnionでマルチプレイゲームを作ってみる / Introduction to developing multiplayer games using MagicOnion
sotanmochi
1
2k
SmartRig Bipedを使ってみよう / Introduction to SmartRig Biped
sotanmochi
0
2.9k
VRMを使ったAR/MR撮影ツールを試作開発してみた話 / Prototype of Mobile Mixed Capture
sotanmochi
0
1.4k
リアルとバーチャルの融合によって越えられない壁を壊す / TechCafe vol.8 LT
sotanmochi
0
230
ユニティちゃんと鬼ごっこができるMRゲームと戦術位置解析システム / Mixed reality game and tactical position analysis
sotanmochi
0
510
Other Decks in Programming
See All in Programming
WEBエンジニア向けAI活用入門
sutetotanuki
0
300
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
220
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
16
4.1k
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
170
Realtime API 入門
riofujimon
0
110
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
440
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.4k
Pinia Colada が実現するスマートな非同期処理
naokihaba
2
160
Golang と Erlang
taiyow
8
1.9k
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
140
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
0
160
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
24
11k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
We Have a Design System, Now What?
morganepeng
50
7.2k
Statistics for Hackers
jakevdp
796
220k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
A Philosophy of Restraint
colly
203
16k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
GitHub's CSS Performance
jonrohan
1030
460k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
Into the Great Unknown - MozCon
thekraken
31
1.5k
The Language of Interfaces
destraynor
154
24k
Transcript
Unityとゲームプログラムの 基本的な構造について 2019/05/30 S. Sugimoto
※この資料は作成途中です
背景 Unityスクリプトを普段なんとなく雰囲気で書いているけど、 実はどういう構造・仕組みでなぜ動いているのかよくわかっていない。 ゲームエンジン(Unity)について理解を深めるためにこの資料を作り始めた。
Unityの基本的な構造
Unityの基本的な構造 UNITYの構造 プロジェクト →シーン →オブジェクト →コンポーネント オブジェクトとコンポーネントが 色々と動いてシーンを構成する。 引用元:Unite 2015「Unityプロジェクトをひも解き把握するには」(山村達彦<ユニティ・テクノロジーズ・ジャパン合同会社>)
https://japan.unity3d.com/unite/unite2015/files/DAY2_1300_room2_Yamamura.pdf
Unityプロジェクトの構造 プロジェクトの構造 • プロジェクトは複数のシーンを持つ事がある。 • シーンは複数のオブジェクトを持つ。 • オブジェクトは複数のコンポーネントを持つ。 • コンポーネントは複数のアセットへの参照を持つ
引用元:Unite 2015「Unityプロジェクトをひも解き把握するには」(山村達彦<ユニティ・テクノロジーズ・ジャパン合同会社>) https://japan.unity3d.com/unite/unite2015/files/DAY2_1300_room2_Yamamura.pdf
Project Scene1 Scene2 Scene3 GameObject 10 GameObject 11 GameObject 20
GameObject 21 GameObject 22 GameObject 30 GameObject 31 GameObject 32 GameObject 23
GameObject 1 MoveComponent Speed = 5 XXXComponent YYYComponent ZZZComponent GameObject
2 MoveComponent Speed = 10 YYYComponent class MoveComponent { float Speed; ・・・ } class XXXComponent コンポーネント (インスタンス) コンポーネント (クラス) ゲームオブジェクト (インスタンス) class YYYComponent class ZZZComponent
ゲームオブジェクトの動作はアタッチされた Component によ り制御されます。 Unity ビルトインのコンポーネントは多目的で使用できるもの の、カスタムのゲーム機能を実装するには十分でない場合が 多いです。 Unity により
Script を使用してカスタムのコンポーネントを作 成し、ゲーム中のイベント開始、時間の経過に伴ったコンポー ネントプロパティーの修正、ユーザー入力操作への反応がで きます。 引用元:スクリプトの作成と使用 - Unity マニュアル https://docs.unity3d.com/ja/2018.3/Manual/CreatingAndUsingScripts.html Unityスクリプト
Unityスクリプトのイベント関数の実行順 画像出典:イベント関数の実行順 - Unity マニュアル https://docs.unity3d.com/ja/2018.2/Manual/ExecutionOrder.html
ゲームプログラムの基本的な構造
ゲームプログラムってどうやって動いているのか? プログラムはMainメソッドから実行が始まるって習いました! でも、Unityでスクリプトを書くときに見たことないです・・・ ゲームプログラムの基本パターン ・ゲームループ(Game Loop) ・ゲームオブジェクト(Game Object)とコンポーネント(Component) ・更新メソッド(Update Method)
ゲームループ(Game Loop) ゲームプログラム全体の流れを制御する ループ プレイヤーがゲームを終了しない限り、ルー プし続ける 1回のループが1フレーム 入力処理、ゲーム更新、出力(描画) ※開発中のC++のコード(まだゲームとして動いてないよ)
GameObject 1 MoveComponent Speed = 5 XXXComponent YYYComponent ZZZComponent GameObject
2 MoveComponent Speed = 10 YYYComponent class MoveComponent { float Speed; ・・・ } class XXXComponent コンポーネント (インスタンス) コンポーネント (クラス) ゲームオブジェクト (インスタンス) class YYYComponent class ZZZComponent
更新メソッド(Update Method) 1フレーム分の処理を実行するUpdateメ ソッドを全てのゲームオブジェクトに実装す る 1フレームに1回、ゲームループはシーンに 含まれる全てのゲームオブジェクトについて Updateメソッドを呼び出す ※開発中のC++のコード(まだゲームとして動いてないよ)
更新メソッド(Update Method) ゲームオブジェクトに含まれる全てのコン ポーネントについてUpdateメソッドを呼び出 す Componentクラスを継承している様々なコ ンポーネントのUpdateメソッドを呼び出す ※開発中のC++のコード(まだゲームとして動いてないよ)
更新メソッド(Update Method) Componentクラスを継承している様々な コンポーネントのUpdateメソッドが呼び出 される Unityでスクリプト書く時に public class MyScript :
MonoBehaviour {} という感じになっているのは、 Componentクラスの継 承に相当する。 これがゲームエンジンで Updateメソッドが勝手に (?)呼び出されて実行される仕組み(のはず) ※開発中のC++のコード(まだゲームとして動いてないよ)
参考文献 ゲームエンジニア養成読本 https://gihyo.jp/book/2018/978-4-7741-9498-1 https://www.amazon.co.jp/dp/B078HYH26V/ Game Programming Patterns ソフトウェア開発の問題解決メニュー https://book.impress.co.jp/books/1114101121 https://www.amazon.co.jp/dp/B015R0M8W0/
ゲームプログラミング C++ https://www.shoeisha.co.jp/book/detail/9784798157610 https://www.amazon.co.jp/dp/B07JVMJ9B1/
※この資料は作成途中です 気が向いたらブラッシュアップします
None