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
710
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.4k
Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader
sotanmochi
2
3.3k
MagicOnionでマルチプレイゲームを作ってみる / Introduction to developing multiplayer games using MagicOnion
sotanmochi
1
2.1k
SmartRig Bipedを使ってみよう / Introduction to SmartRig Biped
sotanmochi
0
2.9k
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
520
Other Decks in Programming
See All in Programming
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
900
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
C++でシェーダを書く
fadis
6
4.1k
Amazon Qを使ってIaCを触ろう!
maruto
0
420
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
3
1.2k
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
5
1.5k
Jakarta EE meets AI
ivargrimstad
0
170
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.8k
CSC509 Lecture 11
javiergs
PRO
0
180
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
RailsConf 2023
tenderlove
29
900
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Building Your Own Lightsaber
phodgson
103
6.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
4 Signs Your Business is Dying
shpigford
180
21k
Faster Mobile Websites
deanohume
305
30k
Ruby is Unlike a Banana
tanoku
97
11k
Designing for Performance
lara
604
68k
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