おれ、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