おれ、Unity2Dでゲーム作るんだ。

Unity2Dをメインに、覚書などを記事にしていきます。

Unity - AssetBundleの基本(AssetBundleを使う)

AssetBundleの作成方法

こちらに書きました。 unity2d.hateblo.jp

AseetBundleの使い方

  • ビルドしてできたデータをサーバに配置
  • ダウンロードして使用

これだけ。

AssetBundleを使う

サーバに配置

どこぞのWEBサーバに設置する node.jsをローカルにインストールしておいて、

GitHub - indexzero/http-server: a simple zero-configuration command-line http server

をインストールしておくと、コマンドラインでサクッとローカルにwebサーバーが起動します。 f:id:xev:20161006162532p:plain

ダウンロードして使用

大まかには、

  • WWW.LoadFromCacheOrDownloadでダウンロード
  • WWW.assetBundleを取得
  • AssetBundleから、LoadAssetを使用してデータを抜き出す

といった処理。

雑にコードにすると、以下。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class AssetBundleLoader : MonoBehaviour
{
    private AssetBundle assetBundleCache;
    public Image image;

    public IEnumerator Start()
    {
        Caching.CleanCache(); //キャッシュさせたい場合は消すべし(ダウンロードのテストなので書いてます)

        // Asset BundleのURL
        var url = "http://127.0.0.1:8080/imageset00";  //webサーバー上にAssetBundleをアップしておく

        // ダウンロード処理
        var www = WWW.LoadFromCacheOrDownload(url, 1);
        while (!www.isDone)
        {
            yield return null;
        }

        // Asset Bundleをキャッシュ
        assetBundleCache = www.assetBundle;
        // リクエストは開放
        www.Dispose();

        // ロード完了後、Assetが取り出せるようになる
        image.sprite = assetBundleCache.LoadAsset<Sprite>("Image_02.png");  //もちろん、このファイル名をAssetBundleに入れておく必要あり
    }
}

ひとまず、これをGameObjectにアタッチしておいて、

f:id:xev:20161006161837p:plain

ヒエラルキーからImageを指定しておくと、読めるはず。 f:id:xev:20161006162211p:plain

一見わかんないですが、サーバーからダウンロードして表示したイメージです。 f:id:xev:20161006162710p:plain

Unity - AssetBundleの基本(AssetBundleをつくる)

AssetBundleとは

f:id:xev:20161004110604j:plain

  • アプリとは別の外部データ。追加データなど、アプリの更新以外でデータを増やしたい場合などの仕組みに利用します。
  • 画像やサウンドをAseetBundle化してパッキングしてサーバーに置く。そして、ダウンロードさせて使う。そんな使われ方を想定された機能です。 https://docs.unity3d.com/ja/current/Manual/AssetBundlesIntro.html

AseetBundleの使い方

作り方こそUnity独自ですが、AssetBunldeを作ってしまえば、データをダウンロードして使うという至って普通の使い方です。

概要 - AssetBundleを作る流れ

1. 素材(Asset)を準備
2. AsstBundleの名前指定
3. AsseBundleビルド用のスクリプトを準備
4. Unity上でBuildしAssetBundleを作成

概要 - AssetBundleを使う流れ

1. ビルドしてできたデータをサーバに配置
2. ダウンロードして使用

AssetBundleを作る

素材をAssetフォルダにインポートする

f:id:xev:20161004110515p:plain

適当にドラッグ&ドロップなどでプロジェクトに追加。

素材のInspector下部よりAssetBundleの名前指定する

f:id:xev:20161004111110p:plain

新規は[new]から名前指定。 素材の追加はプルダウンで名称を選択

スクリプトをAsset配下に設置

f:id:xev:20161004143505p:plain

配置すると、メニューバーに上記の場合は[CustomMenu]表示が現れます。

Unity上でBuildしAssetBundleを作成

メニューから実行 f:id:xev:20161004110351p:plain

※あらかじめスクリプトに記述した出力パスは作成しておくこと。

  • 指定したパスにAssetBundleがファイル名で出力される
  • 同名の2つファイル(AssetBundle本体と、マニフェストファイル)

これでひとまずAssetBundleの作成完了

https://docs.unity3d.com/ja/current/Manual/BuildingAssetBundles.html

あとは、設置して使う処理を作る。

は、こちら unity2d.hateblo.jp