Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Asset bundleなどの、Unity3d基礎知識

18,347 views

Published on

Asset bundleなどの、Unity3d基礎知識

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

×