狠狠撸
Submit Search
Asset bundleなどの、Unity3d基礎知識
?
17 likes
?
19,242 views
Nobukazu Hanada
Follow
1 of 61
More Related Content
Asset bundleなどの、Unity3d基礎知識
1.
ASSETBUNDLE含む UNITY3Dの基礎知識 花田 恒一 13年5月31日金曜日
2.
自己紹介 九州大学芸術工学部音響設計学科3年 Lisp/Scheme/Haskellが好きです。 Unity3dでBooのSchemeR5RSの処理系のAssetを作成 中 @nobkz http://www.facebook.com/nobukazu.hanada 13年5月31日金曜日
3.
THE 前置き 13年5月31日金曜日
4.
ある日のこと 13年5月31日金曜日
5.
花田君、AssetBundleに ついて話してよ? 13年5月31日金曜日
6.
僕:「いいですよー」 13年5月31日金曜日
7.
.?oO( アセットバンドルってそん な話す事あったっけ? ) 心の声 13年5月31日金曜日
8.
.?oO( まあいいか ) 13年5月31日金曜日
9.
とりあえず資料を作る。 13年5月31日金曜日
10.
案の上、ボリュームが立りないかなぁ? 13年5月31日金曜日
11.
うーん。 13年5月31日金曜日
12.
うん! 13年5月31日金曜日
13.
Unity3dのアーキテクチャやら メモリ管理やら そっちの話追加しちゃえー! 13年5月31日金曜日
14.
というわけで.... 13年5月31日金曜日
15.
話す事 13年5月31日金曜日
16.
今回の内容 Unity3dのアーキテクチャについて Unity3dのメモリ管理 Unity3dのアセットバンドル 13年5月31日金曜日
17.
目的 Webの情報などは、凄く断片的すぎる 以外と、アーキテクチャやらメモリの話がない(みん なわかってること?) Unity3dの中身から、何となく理由が分かるようにす る 13年5月31日金曜日
18.
アーキテクチャ 13年5月31日金曜日
19.
アーキテクチャ UnityEngine UnityEditor Unity .NET Mono 13年5月31日金曜日
20.
UnityEngine Unity3dゲーム実行時に関するフレームワーク 基本的に、これを読み込んでゲームを作る 13年5月31日金曜日
21.
UnityEditor Unityエディタのフレームワーク エディタ拡張のために使う Editorフォルダ内で編集する必要がある。 13年5月31日金曜日
22.
.NETについて C#, CLIの仕様は公開されている Microsoft .NET
Frameworkは商用実装 Monoは.NETのオープンソース実装 13年5月31日金曜日
23.
Monoとは? .NETのオープンソースの実装 CLIやC#コンパイラが含まれる Unity3dでは2.0までは動く?(情報が古いかも) 13年5月31日金曜日
24.
使用できる言語 C#、UnityScript(JavaScript)、Boo 僕はBooが好きです。 USはBooをホスト言語にしたDSL ぜーんぶ、.NET上で走るよ! 13年5月31日金曜日
25.
Unity3dのデータについて 素材のAssetフォルダ Assetのメタデータとして、Libraryフォルダ 基本的にUnity3dはインデックス管理 13年5月31日金曜日
26.
シーンのデータ Unity3dのパッケージにあるbinary2textを使用してバ イナリをHumanReadableにして読んでみる 13年5月31日金曜日
27.
いつビルドされるか? 基本的に、Unity3dが修正を検知すればビルドされ る。 Play中であっても、無くても修正があればビルドさ れる。 コンパイルされる順番に注意。 13年5月31日金曜日
28.
スペシャルフォルダ Standard Assets、Resources、Editor、Plugings, Gizmosなどは、スペシャルフォルダ Standard Assets、Plugingsは先にビルドされる。 Editorは最後にビルドされる。 13年5月31日金曜日
29.
良くハマるエラー スペシャルフォルダが原因で、ちょくちょく質問さ れること。 GetComponentのデモをする。 13年5月31日金曜日
30.
環境の違い Unity3dはクロスプラットフォーム。 だからと言ってUnity3dの知識さえあれば良いのか? どこまでがUnity3dが違い吸収してくれて、どのよう に吐き出されるか知る必要がある。 13年5月31日金曜日
31.
iOS/Andoridに関して iOSは、Appleの制限が多い。 Androidは結構緩い。 (例: AndroidはJITコンパイルできるが、iOSは出来な い。) また、iOSは動的にコードを生成できない 13年5月31日金曜日
32.
メモリ 13年5月31日金曜日
33.
C#erが落ちる罠 「GCされるからメモリ管理必要ないよね!」 (実際にC#erが言ってました) 13年5月31日金曜日
34.
Unity3dでの開発では GCされない場合がある。 13年5月31日金曜日
35.
メモリ基礎知識 Systemのメモリ管理 Unityのメモリ管理 Monoのメモリ管理 System Unityの メモリ Mono 13年5月31日金曜日
36.
Unity3dのメモリ管理 基本的に自分で管理しないと行けない場合が多い。 基本的にシーンが生成して、最後にGCが走る。 GG.Collectを呼んでも、Finalizerに入るだけで解放されな いことがある よってDispose()を使う。これによってFinalizerに入らず解放 される。 13年5月31日金曜日
37.
続き。 ClassよりStructを使う OnGUIはかなりのメモリを消費ので避ける AssetBundleに関しては後述する。 13年5月31日金曜日
38.
GCされるタイミング。 LoadLevelが呼ばれ、シーンを構築 前のSceneの使用してないObjectをDestroy Awakeが呼ばれる GC 13年5月31日金曜日
39.
ASSET BUNDLEとは? 13年5月31日金曜日
40.
AssetBundleとは? アセットをパッケージして外部で持てるようにした ファイル Prefab, Material, GameObjectなどが入る Proのみ。 13年5月31日金曜日
41.
AssetBundle利点 アプリケーションサイズを小さくできる。 アプリ本体と、Assetbundleで分けることができる。 キャッシュが利用できる(WebPlayer 50MB, iOS/ Android
4GB) 13年5月31日金曜日
42.
欠点 プラットフォームごとにAsset Bundleをビルドしない と行けない。 通信状況が悪いと読み込めない Scriptが消失する。 13年5月31日金曜日
43.
作り方 13年5月31日金曜日
44.
AssetBundlesの作り方 基本的に3つのクラスメソッドがある BuildPipeline.BuildAssetBundle BuildPipeline.BuildStreamedSceneAssetBundle BuildPipeline.BuildAssetBundleExplicitAssetNames 13年5月31日金曜日
45.
とりあえずやってみる デモ(Asset Bundleを作成するデモ) 13年5月31日金曜日
46.
注意 このデモによるAssetBundleでは、一つづつビルドし ています 運用時では、UnityEditorを拡張し、一発ビルドする ようにするのがおすすめ。 13年5月31日金曜日
47.
読み込み方 13年5月31日金曜日
48.
AssetBundleをLoad LoadFromCacheOrDownloadを使う。 13年5月31日金曜日
49.
とりあえずやってみる デモ(AssetBundleを読みこむ。) 13年5月31日金曜日
50.
4つのLOAD 13年5月31日金曜日
51.
4つのLoad 実はAssetBundleの読み込みには4つの方法がある LoadFromCacheOrDownload CreateFromFile WWW、CreateFromMemory 13年5月31日金曜日
52.
LoadFromCacheOrDownload 一番おすすめ ダウンロードし、展開された状態でストレージに保 存される。 実行時に展開用のメモリが少ない。 ストレージは圧迫する 13年5月31日金曜日
53.
CreateFromFile 次におすすめ 圧縮されてないAssetBundleしか使えない 前と同様、メモリは少なく、ストレージを圧迫する 13年5月31日金曜日
54.
WWW:CreateFromMemory あまりおすすめしない。 展開に使う分、メモリが必要。 ストレージは節約できる 13年5月31日金曜日
55.
補足、注意点、小ネタ 13年5月31日金曜日
56.
使用時の注意点 プラットフォームでの互換性が無い AssetBundle作成時にプラットフォームをそれぞれ 指定する。 スクリプトは使用できない(iPhoneのみ) 13年5月31日金曜日
57.
AssetBundleのメモリ管理 AssetBundleの読み込みは1つずつ実行すること 展開用に確保されるメモリが複数確保されること を防ぐため ロード直後はUnload(false)する。WWWのDisposeも 忘れずに。 不要になったときassetBundle.Unload(true) か UnloadUnusedAssets() で解放 13年5月31日金曜日
58.
複数でのAssetBundle 複数でAssetBundleを使用時において、重複した Assetがある場合、その分メモリに乗ってしまう。 PushAssetDependenciesを使用する ずれる可能性がある 13年5月31日金曜日
59.
AssetBundle DeterministicAssetBundleでインデックス管理からID 管理へと この場合ディスクメディアでシークに時間がかか る。 13年5月31日金曜日
60.
まとめ 13年5月31日金曜日
61.
ご清聴ありがとうございました 13年5月31日金曜日