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
810
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.6k
画像処理から始めるコンピュートシェーダ / Introduction to Image Processing using Compute Shader
sotanmochi
2
2.3k
Diminished Reality 入門 / Introduction to Diminished Reality
sotanmochi
2
8.6k
Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader
sotanmochi
2
3.5k
MagicOnionでマルチプレイゲームを作ってみる / Introduction to developing multiplayer games using MagicOnion
sotanmochi
1
2.2k
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
240
ユニティちゃんと鬼ごっこができるMRゲームと戦術位置解析システム / Mixed reality game and tactical position analysis
sotanmochi
0
560
Other Decks in Programming
See All in Programming
『品質』という言葉が嫌いな理由
korimu
0
160
SRE、開発、QAが協業して挑んだリリースプロセス改革@SRE Kaigi 2025
nealle
3
4.1k
テストをしないQAエンジニアは何をしているか?
nealle
0
130
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
120
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
110
Grafana Cloudとソラカメ
devoc
0
140
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
300
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
160
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
230
Honoとフロントエンドの 型安全性について
yodaka
4
250
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
480
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
GraphQLとの向き合い方2022年版
quramy
44
13k
Done Done
chrislema
182
16k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
The Language of Interfaces
destraynor
156
24k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Embracing the Ebb and Flow
colly
84
4.6k
A Tale of Four Properties
chriscoyier
158
23k
Gamification - CAS2011
davidbonilla
80
5.1k
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