unity ソーシャル アセットバンドル バージョンコントロールやり方

  • このエントリーをはてなブックマークに追加
  • LINEで送る

追加コンテンツを効率良く作るために、unityアセットを使用した。

アセットバンドルとは

AssetBundle システムは、Unity がインデックスできるアーカイバル形式にひとつ、または複数のファイルを保存できるようにするシステムです。このシステムの目的は、Unity のシリアライズの仕組みと互換性のあるデータ送信方式を提供することです。AssetBundle は、インストール後に非コードのコンテンツを配信および更新するために使われる、Unity の主要ツールです。これによって、アセットのサイズを縮小したり、ランタイムのメモリー負荷を最小化したり、エンドユーザーのデバイス向けに最適化されたコンテンツを選択的に読み込ませることが可能になります。

unityで圧縮したファイルとか画像とかシーンとかを保存して利用できる。

保存したデータは、アプリ内でも、サーバーに設置してダウンロードしてしようしてもよい。キャッシュとネットワークのコントロール(オープン・クローズ)もほぼ適切におこなってくれるため、メモリー操作が格段に楽になる。

アセットバンドルを使用するメリットとしては、

  • アプリインストール後にデータの追加ができる。
  • unityに最適化された圧縮解凍方法なので負荷が下がる
  • バージョンの管理、キャッシュの管理もついてる

もちろんデメリットもあって

  • デフォルトでスマホだとキャシュが半年程度で消える
  • データを作成するためにunityで作成するか、またはunityscriptを使用しなければならない。しかも、プラットフォーム毎に作成する必要がある。
  • 非コードようなので、あとでコードを足すことは基本的に出来ない(例外あり)

 

インムスでは、追加アセットとして、追加キャラクター画像と音声。追加イベント時のアイテム、追加イベント時の収集アイテムの画像のみを使用した。

シーン単位での追加コンテンツ作成は、毎回実装時間や手順が膨大になるためパラメーターはサーバーからダウンロードで取得し、その指定する画像データ、音声データは追加で取得できるよう設計した。

よくあるパターンでインストール初回にログイン時にデータをダウンロードし、

次回からは、追加コンテンツの有無に合わせてダウンロードする。

これらの仕組みを、ソーシャルでやる前提として、アセットの管理が別に必要になる。

なぜなら、自分が持っていない画像データーであっても、他のプレイヤーが持っている場合などが発生しないように常に、最新版のアセットバンドルデータと、そのコンテンツを指定するサーバーのデーターが必要になるためだ。今回はそのあたりを含めて制作した。

 

unityアセットを使った追加コンテンツ作り方

まずは、ちょっと前の記事で紹介した、「unityでキャラクターデータを作ろう」で作成した、

キャラの画像データをアセットバンドル化してみる。

フォルダ単位でも、ファイル単位でも指定できるが ここでは初期データ作成として、フォルダーをアセット化する。

下記のファイルをフォルダーAssets→Editor内に作成する。これで、メニューのAssetsの下部にBuild AssetBundlesが作成される。

 

圧縮されたファイルの置き場を作成する。

Assets→AssetBundlesフォルダを作成する。

 

圧縮するファイルを指定する

通常、ローカルの画像は、Assets→Resourcesに入れているはずなので Resource内にcimgフォルダを作成して

必要な画像データを移動する。

フォルダを選択後 unityのエディター右下のasset Labelsをクリック

Noneをクリックしてメニューを表示後 Newをクリック。

ここでアセット名を決定する。

別にcimgeにまとめなくてもここで設定したアセットバンドル名を別のフォルダでもファイルでも指定すれば同じパッケージにまとめてくれる。 (だけど、何入れたか忘れるのでまとめた方が無難です。)

アセット名を指定したら、メニューに先程追加した Build AssetBundlesをクリックすれば、後はしばらく待って於けば、出力先にアセットバンドルが出来上がる。

インムスは、android、iosで同じソースで制作しているのでプラットフォームを切り替えて再度Build AssetBundlesをする。

以上でAssets→AssetBundles内に iosフォルダ androidフォルダに同名の アセットが作成される。

なお、エディターで使用する場合も現在のプラットフォームに合わせたファイルが必要になるので注意。

アセットバンドルファイルをios androidともにサーバーにアップロードします。

 

unity アセットを使ってみよう。

アセットバンドルの使用には、リソースに入れたファイルと異なり、

一度、ロードする必要があります。

unityの アセットストアに アセットのバージョン管理、ダウンロード、ロードもやってくれる便利なアセットがあるので入れて使用。

https://www.assetstore.unity3d.com/jp/#!/content/45836

 

これで、アプリ側の管理化に画像アセットが追加される。

ここでは、作成したアセット名を  testassets     中にいれた画像ファイルを  カード連番_t.pngとする。

キャラクターデータベースに assetnameカラムを作り、testassetsと記入する

アセットの呼び出し方法は、単純でスプライトを作成して、UIimageに渡して上げれば良い。

表示したいキャラクターのUIimageをつくりchara_tとし同名でfind後

とすれば、以降は一行でキャラクターの画像を表示できる。

unityアセットでバージョン管理

実際には、初期アセット以外にも追加でアセットを作って行くことになるので、

sqliteに作成したアセットのリストを作る→unityがわでassetListとしてリストで保持して、

先程のデータの読み込みを下記のように変更した。(単に繰り返し処理を行い見つけたらブレーク。)

 

 

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*