LoginSignup
18
13

More than 5 years have passed since last update.

UnityのSpritePackerとAssetBundleを併用する。

Last updated at Posted at 2016-01-25

概要

普段はTexturePackerを使っているのでSpritePackerについてはよく知らなかったのですが、
「SpritePackerでまとめたテクスチャって別ファイルとして生成されないけどAssetBundle化したい場合どうするの?」
という趣旨の疑問を投げ掛けられたので、いろいろ検証してみました。

今回はその結果から得られた結論とざっくりとした手順を綴ります。

※検証環境は Unity 5.3.1 です。

結論

パックしたテクスチャを同じアセットバンドルに突っ込めばOK!

とっても簡単ね!

手順

1. Textureの設定

まとめたいテクスチャの設定は、

  • ファイルはResources外に
  • SpriteModeSingle
  • PackingTagを同じ値に
  • 圧縮設定も統一

する必要があるよ。

TexAとTexBを一つのアトラスにまとめたい場合は、
tp_01.png
こんな感じ。

2. Packする

メニューから Window -> SpritePacker を選んでね。
tp_02.png

SpritePackerウィンドウが開いたら、左上の[Pack]ボタンを押してね!
tp_03.png

うまくいけば手順1で設定した通りのアトラスができあがるよ!

※上図はアトラス化が成功した後の図です。

3. AssetBundle化設定

次に、アトラスに含めた2つのテクスチャを同じAssetBundleに入れる設定をするよ。

Projectツリーで2つのテクスチャを選択し、Inspectorで任意のAssetBundle名をつけてね!
tp_04.png

設定が終わったら、AssetBundleをビルドしてね!

※AssetBundleの作り方とかその辺は割愛します。

4. 読み込んで、取り出して、表示してみる

こんな感じのコードを書いたよ。

BundleTest.cs
using System;
using UnityEngine;
using System.Collections; class BundleTest : MonoBehaviour
{
    public SpriteRenderer   spriteA     = null; //!< 予めシーンに配置してあるSprite
    public SpriteRenderer   spriteB     = null; //!< 予めシーンに配置してあるSprite

    IEnumerator Start()
    {
        // AssetBundleを取得(AssetBundleを置いたURLを指定してね!)
        using( WWW www = new WWW( "file://C:/unity/AssetBundles/mytexbundle" ) )
        {
            yield return www;
            if( www.error != null )
                throw new Exception( "エラーだよ : " + www.error );

            AssetBundle bundle = www.assetBundle;

            // シーンのSpriteにAssetBundle内のリソースを割り当てる
            {
                if( spriteA != null )
                    // mytexbundleからTexAを取り出してSpriteAに割り当て
                    spriteA.sprite = bundle.LoadAsset( "TexA" ) as Sprite;

                if( spriteB != null )
                    // mytexbundleからTexBを取り出してSpriteBに割り当て
                    spriteB.sprite = bundle.LoadAsset( "TexB" ) as Sprite;
            }

            bundle.Unload( false );
        }
    }
}

実行画面はこんな感じ。
tp_05.png

2つのスプライト(元は2つのテクスチャ)の描画が1回になっていれば、SpritePackerとAssetBundleの併用実験は成功だよ!

18
13
5

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
18
13