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
760
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.3k
Diminished Reality 入門 / Introduction to Diminished Reality
sotanmochi
2
8.4k
Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader
sotanmochi
2
3.4k
MagicOnionでマルチプレイゲームを作ってみる / Introduction to developing multiplayer games using MagicOnion
sotanmochi
1
2.1k
SmartRig Bipedを使ってみよう / Introduction to SmartRig Biped
sotanmochi
0
3k
VRMを使ったAR/MR撮影ツールを試作開発してみた話 / Prototype of Mobile Mixed Capture
sotanmochi
0
1.5k
リアルとバーチャルの融合によって越えられない壁を壊す / TechCafe vol.8 LT
sotanmochi
0
230
ユニティちゃんと鬼ごっこができるMRゲームと戦術位置解析システム / Mixed reality game and tactical position analysis
sotanmochi
0
530
Other Decks in Programming
See All in Programming
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
340
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
780
testcontainers のススメ
sgash708
1
120
Recoilを剥がしている話
kirik
5
6.7k
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
210
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
390
MCP with Cloudflare Workers
yusukebe
2
220
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
550
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
400
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
330
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
快速入門可觀測性
blueswen
0
360
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
The Language of Interfaces
destraynor
154
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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