レポート一覧
- ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~
- コロプラUnity 5プロジェクト ~白猫プロジェクトにおけるUnity 4からUnity 5への移行事例~
- Unity 5グラフィックス機能使いこなしガイド
- Rederer Massive Amount of Objects in Unity
- 協力・対戦ゲームを支えるPhotonの最新情報、Mecanimにネイティブ対応したPUNの実力協力・対戦ゲームの市場感
- ゲーム開発の始め方、育て方、終わらせ方~「Game Dev Heroes」における生産性チャレンジ~
講演ファイル
AssetBundle
今までの問題点
- スクリプトを書く必要がある
- ビルド時間が長い
- 差分ビルドが難しい
- 依存関係の設定が面倒
- 互換性がない
- Unityのバージョンを上げるとビルドし直す必要がある
- アプリのユーザーがアセットバンドルをDLし直す必要がある
Unity 5.x 以降
- スクリプトを書く必要がほとんど無くなった
- 差分ビルドが簡単になった
- push、popしなくてもUnityが依存関係を設定してくれるようになった
- 互換性を保持するようになった
- 注意:4.xと5.xのアセットバンドルを混ぜないように
新しいアセットバンドルのビルド方法
- UnityエディタのInspectorでAssetとAssetBundle間を結びつける
- ビルドするスクリプトを呼ぶ
BuildPipline.BuildAssetBundles();
これだけ
名前付けに関して
- 拡張子は.unity3dじゃなくてもいい
- 小文字のみ
- 同じ名前は禁止
- パス構成が使える
- Editor拡張で一気に「名前」=「パス」と変更も可能
BuildAssetBundleOptionsが追加された
- IgnoreTypeTreeChanges
- ソースコードを変更しても変化したとみなされない
- アセットバンドルの再生成を防ぐことができる?
- DisableWriteTypeTree
- タイプツリー削除(サイズ削減用途として)
- こちらオンにしてIgnoreTypeTreeChangesをオンにすることはできない
バージョン互換性
- 4.6と5.1: ☓
- 5.1と5.2: ○
依存関係
- マニフェストファイルが解決
- SingleManifestファイル
- 親玉
- 依存関係を解決できる
- ランタイム時に読んで使用する
- 他の.manigestファイル
- インクリメンタルビルドにだけ関係する
- ランタイム時は読み込まない
- SingleManifestファイル
.manifestファイルの中身
- CRC
- アセット名
- 依存関係
- Hash
- ClassTypes
SingleManifestファイルの中身
- すべてのアセットバンドル名などを保持する
- OSXプラットフォーム向きであれば「OSX.manifest」がSingleManifestファイル
Variantとは?
- SDモードやHDモードでアセットを出し分けする機能のこと
- つまり、ランタイム時に読み込むアセットバンドルを変えられる
- アセットのInspectorのアセットバンドル名の右側の入力欄で設定可能
サンプルプロジェクト
- http://files.unity3d.com/vincent/assetbundle-demo/users_assetbundle-demo.zip
- 下記のスクリプトを参考にするのがおすすめ
- AssetBundleManager.cs(マネージャークラス)
- BaseLoader.cs(基本ローダー)
Unityエディタ上でテストする
- AssetDatabase.GetAsssetPathsFromAssetBundleAndAssetName
- ランタイムと同じ仕組みをエディタ上で再現できる
ジュエルセイバー
- 無償のキャラクターコンテンツ
- http://www.jewel-s.jp/download/
アセットバンドルビルドの時間短縮の方法
- 複数のプロジェクトを用意して並行でビルドする
- プロジェクトファイルを複数作成
- シンボリックリンクを設定する
- Library,ProjectSettingsフォルダをリンク
- Assetはその中にあるフォルダとファイルをリンク
- Tempはリンクしない
- Unityはバッチモードを使う
- ビルドするAssetBundleはプロジェクトによって分担を分ける
- 例:100個あるABのうち、1~25はプロセス1,26~50はプロセス2に任せる
- 注意点
- 未来永劫使えるとも限らない!
- 運用は自己責任で...
UnityEditor.iOS.Xcode名前空間
- Xcodeプロジェクトを直接編集可能になりました
- ただしドキュメントがない
- サンプルコード
Plug-in
変更点
- Inspectorで設定できるようになった
- Pluginsフォルダの中に入れなくてもいい?
- 依存するFrameworkを選択可能
- コンパイルオプションを設定可能
Native Plugin
- Unityからネイティブの関数を呼び出し
- CからObjCを呼び出し
- ObjCを呼び出し
ObjC.cs
- objc_getClassなど
- 利点
- 橋渡し部分のコードを書かなくてもいい
- Singletonを使わなくていい
- 注意点
- 引数が使えない