LoginSignup
20

More than 5 years have passed since last update.

【Unity】Unite 2015「ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~」レポート

Last updated at Posted at 2015-04-23

レポート一覧

講演ファイル

AssetBundle

今までの問題点

  • スクリプトを書く必要がある
  • ビルド時間が長い
  • 差分ビルドが難しい
  • 依存関係の設定が面倒
  • 互換性がない
    • Unityのバージョンを上げるとビルドし直す必要がある
    • アプリのユーザーがアセットバンドルをDLし直す必要がある

Unity 5.x 以降

  • スクリプトを書く必要がほとんど無くなった
  • 差分ビルドが簡単になった
  • push、popしなくてもUnityが依存関係を設定してくれるようになった
  • 互換性を保持するようになった
  • 注意:4.xと5.xのアセットバンドルを混ぜないように

新しいアセットバンドルのビルド方法

  1. UnityエディタのInspectorでAssetとAssetBundle間を結びつける
  2. ビルドするスクリプトを呼ぶ
    BuildPipline.BuildAssetBundles();

これだけ

名前付けに関して

  • 拡張子は.unity3dじゃなくてもいい
  • 小文字のみ
  • 同じ名前は禁止
  • パス構成が使える
  • Editor拡張で一気に「名前」=「パス」と変更も可能

BuildAssetBundleOptionsが追加された

  • IgnoreTypeTreeChanges
    • ソースコードを変更しても変化したとみなされない
    • アセットバンドルの再生成を防ぐことができる?
  • DisableWriteTypeTree
    • タイプツリー削除(サイズ削減用途として)
    • こちらオンにしてIgnoreTypeTreeChangesをオンにすることはできない

バージョン互換性

  • 4.6と5.1: ☓
  • 5.1と5.2: ○

依存関係

  • マニフェストファイルが解決
    • SingleManifestファイル
      • 親玉
      • 依存関係を解決できる
      • ランタイム時に読んで使用する
    • 他の.manigestファイル
      • インクリメンタルビルドにだけ関係する
      • ランタイム時は読み込まない

.manifestファイルの中身

  • CRC
  • アセット名
  • 依存関係
  • Hash
  • ClassTypes

SingleManifestファイルの中身

  • すべてのアセットバンドル名などを保持する
  • OSXプラットフォーム向きであれば「OSX.manifest」がSingleManifestファイル

Variantとは?

  • SDモードやHDモードでアセットを出し分けする機能のこと
  • つまり、ランタイム時に読み込むアセットバンドルを変えられる
  • アセットのInspectorのアセットバンドル名の右側の入力欄で設定可能

サンプルプロジェクト

Unityエディタ上でテストする

  • AssetDatabase.GetAsssetPathsFromAssetBundleAndAssetName
  • ランタイムと同じ仕組みをエディタ上で再現できる

ジュエルセイバー

アセットバンドルビルドの時間短縮の方法

  • 複数のプロジェクトを用意して並行でビルドする
    • プロジェクトファイルを複数作成
    • シンボリックリンクを設定する
      • 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

  1. Unityからネイティブの関数を呼び出し
  2. CからObjCを呼び出し
  3. ObjCを呼び出し

ObjC.cs

  • objc_getClassなど
  • 利点
    • 橋渡し部分のコードを書かなくてもいい
    • Singletonを使わなくていい
  • 注意点
    • 引数が使えない

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20