Amazonで商品を見るセール会場へ

UnityのSprite Atlasの作り方|V2・UI設定・読み込みと効果の確認

Sprite Atlasは複数のSpriteのTextureをまとめるAssetです。Unity 6.3ではSprite Atlas V2を作成し、使うSpriteをObjects for Packingへ登録してPack Previewで確認します。画像をまとめただけで、すべての描画が1回になる、必ずBatchesやメモリが減るとは判断しません。

現在の手順の参照版はUnity 6.3 LTS(6000.3)。元記事にはUnity 2017以降の初期Sprite AtlasとUnity 5系Sprite Packerの画像・比較が含まれます。この改稿でUnity Editorのパッキング、ビルド、実機性能測定は行っていません。旧画像をV2の動作確認にせず、下の少数Spriteで期待値を照合してください。

目次

Sprite Atlas V2と旧Sprite Packerの違い

条件・症状手順・確認する結果
現在のSprite Atlas V2Sprite Atlas AssetのPackablesにSprite/Texture/フォルダーを登録する。Createで.spriteatlasv2を作る。
以前のSprite Atlas V1V2へアップグレードする場合は元Assetをバックアップ。公式はV2からV1へ戻せないと説明。
Unity 5系Sprite PackerPacking Tagを使う旧方式。旧タグ設定・AtlasCacheのパスを現行V2の操作として使わない。
Sprite Sheetの分割1枚の画像から複数Spriteを切り出す作業。複数画像をAtlasへまとめることとは別。

1. まとめるSpriteと読み込み方法を決める

同じ画面/Sceneで使うSprite、同じ圧縮/フィルター条件のSpriteを小さくまとめるところから始めます。全Assetsを1Atlasへ集めると、使わない画像のメモリや複数Textureページを含むため、一覧の数だけで最適と決めません。Sprite Atlasの公式概要も使用場面や設定で分ける方法を説明しています。

新規確認ではResourcesやAssetBundleへ移す前に、Sceneへ直接参照した少数SpriteとInclude in Build有効のAtlasで確認します。元記事の「AtlasだけをResourcesへ入れる」はすべてのプロジェクトの必須構成ではありません。次の画像は旧Resources構成の資料です。

スプライトアトラスのみをフォルダに配置する構成例。

2. Sprite Atlasを作りPack Previewで確認する

先にEdit > Project Settings > EditorのSprite Atlas/Modeを確認します。編集時もAtlasで確認する例はSprite Atlas V2 – Enabledです。古いV1 Assetがあるプロジェクトで切り替える場合は、移行前のAssetと設定をバックアップします。V2へ変換したAssetをV1へ戻せる手順ではありません。

  1. コピーした素材をSpriteとしてインポートし、使用するSpriteがProjectに見えることを確認します。静的画像1枚とSprite SheetのMultipleを混同しません。
  2. Assets > Create > 2D > Sprite AtlasでAtlasを作ります。Unity 6.3の公式作成手順は.spriteatlasv2です。
  3. 作成したAtlasを選び、Objects for PackingのPackablesへSprite/Texture/専用フォルダーを登録します。最初は少数のSpriteを直接指定し、無関係な素材を取り込まないよう確認します。
  4. Pack Previewを押し、Inspector下部のPreviewで登録したSpriteが含まれるか、Textureページや寸法、Platform Settingsの対象を確認します。Previewは実ビルドの読込・性能を検証したことにはなりません。
  5. SceneのSpriteRendererまたはuGUI Imageへ元のSpriteを割り当て、Game/Playと対象プラットフォームのビルドで表示を確認します。Sprite自体をAtlas画像の任意領域へ手で置き換える操作ではありません。

次の作成・旧設定画像は初期Sprite Atlas/Sprite Packerの資料です。旧Always Enabledという項目名を、そのままV2の設定に置き換えないでください。

パッキング対象のフォルダやスプライトを登録してプレビュー確認する操作画面。
Unityにおけるスプライトアトラス作成方法と従来のSprite Packerとの違いを解説する記事のアイキャッチ。
Unity 5系における従来のSprite Packerの手順を示す画面。

3. Canvas UI・ピクセルアートで確認する設定

条件・症状手順・確認する結果
Canvasで使うSpriteAllow Rotationを無効にする。公式Inspector資料がCanvas UIの回転を避ける設定として説明。
Tight PackingSpriteのCustom Outlineの形で詰める機能。単なるPNG透明余白のファイル削除とは別。必要な形状とUI表示を比較する。
Padding隣のSpriteの色が混ざらないよう間隔をとる。必要量はフィルター・縮小・圧縮等の条件で確認。
Filter ModePointはピクセル表現、Bilinear等は拡大縮小の見た目を確認。すべてのUIへPointを推奨しない。
Read/WriteCPUからTextureデータを読み書きする用途がなければ不要な有効化を避ける。公式には条件によりコピー保持の負担が説明されている。
Max Texture Size・Format対象プラットフォームの寸法/形式/Overrideを確認。Previewの見た目だけで実機メモリを決めない。

各設定はUnity 6.3 Sprite Atlas Inspectorを参照します。同じAtlasを使ってもMaterial/Shader、Sorting、Mask/Clip等の描画条件が異なれば同じまとまりとして描画されるとは限りません。

4. Include in BuildとResources・手動読み込み

通常の確認ではInclude in Buildを有効にします。無効にするとPlay/ビルドでAtlas Textureが見つからずSpriteが消えることがあり、Scene/Game編集ビューで見えるだけでは読込の確認になりません。公式の手動読込・Late BindingではatlasRequestedへロード結果を返す方法を説明しています。

  1. 起動時から使う場合はInclude in Build有効の構成で確認します。
  2. 必要なときだけ読み込む場合はInclude in Build無効、ResourcesまたはAssetBundle等の配置、atlasRequestedの処理を一組として設計します。Atlasをフォルダーへ移しただけでは手動読込処理が完成しません。
  3. AssetBundleへAtlasとSpriteを分ける場合は重複Assetと依存を公式資料で確認します。「元SpriteをResourcesから出す」だけを全方式の重複対策としません。
  4. 同じSpriteを複数Atlasへ入れた場合は、意図したAtlasが使用される条件を確認します。公式作成資料は実行時のAtlas選択が一定にならない場合を説明しています。少数のAtlasとSpriteでビルドまで試します。

旧版資料:Unity 5のSprite Packerと自動タグ付け

ここからの旧画像はPacking Tagを設定してSprite PackerでPackする方式です。Unity 5系の既存プロジェクトを読む資料として保ちます。旧Resources制限やLibrary/AtlasCacheの場所を、現在のV2の必須条件にしません。

スプライトパッカーのウィンドウでパッキングを実行する操作画面。
パッキング結果の確認画面。
パッキングされたテクスチャが生成された結果の確認画面。

旧SpritePostprocessorの元記事はUnity 5.3.4f1の2016年の自動設定例です。TextureImporterのPacking Tagを付ける旧処理で、V2のPackablesへ自動追加するコードではありません。画像のImporter値だけを統一する用途はPreset Managerと分けます。旧コードを導入しただけで現行Atlasが自動生成されると説明しません。

効果を確認する:旧Batchesの数値と今回の検証手順

元記事には画像6枚でパッキングなし7、あり2というBatchesの比較がありました。次の画像は旧測定資料ですが、使用Unity版・Scene・Material・描画順・プラットフォーム等の再現条件を十分追跡できません。現在の環境で7→2になるとは保証せず、今回測定した値として扱いません。

パッキング有無によるバッチ数の変化を示す画面。
  1. 同じScene、Sprite、画面サイズ、Material、Camera/Canvas、Build Targetで、Atlasを使う構成と使わない構成を作ります。ほかの描画や設定を同時に変えません。
  2. Frame Debuggerで対象描画が使うTexture、Material、描画順を確認します。Stats/ProfilerのBatchesやSetPass、CPU/GPU時間を用途に応じて記録し、SRP Batcher等の条件も残します。
  3. 同じ表示でメモリ、Atlasページ数、ロード時の挙動も確認します。Batchesが減ることとTextureメモリが減ることは別の確認です。
  4. 対象実機のビルドで複数回確認し、条件と測定結果を保存します。Editorの旧画像だけからFPSや実機改善を断定しません。

透明余白:旧サイズ比較の読み方

元記事は64×64pxに8×8px矩形を置く条件として、4枚は透明あり/なしとも32×32px、8枚は透明なし32×32px・透明あり64×32pxという結果を記載しています。次の2画像は旧素材・結果です。Packing Mode、Tight、Padding、回転、圧縮等の条件は十分追跡できないため、この表から「先にPNGをトリミングすれば常に小さくなる」と一般化しません。

ベース画像上に矩形を配置した透明部分削除の検証用画像。
透明部分の有無によってパッキング後のアトラスサイズが変化した検証結果。

現在のSprite AtlasではTight PackingとCustom Outlineを確認し、同じ設定で必要なSpriteの領域が保たれるか比較します。元画像の余白を直接切る場合は、Pivot・Border・Spriteの切り出し・位置合わせやアニメーションへ影響するため、Atlasのサイズだけで決めずコピー素材で表示を照合します。

次の旧自動設定・比較画像も、旧手順の記録です。SpritePostprocessorの導入成功やV2の性能確認ではありません。

タグ付けとパッキングを自動実行する便利なエディタースクリプトの使い方を示す画面。
スプライトアトラスとSprite Packerの対応バージョンや設定方法、使いやすさを比較した一覧表。

表示されない・パックされないときの切り分け

条件・症状手順・確認する結果
Pack Previewに対象がないSprite import、Packablesの参照、対象フォルダー、Mode、Consoleを確認。
編集では見えるがPlayで消えるInclude in Build、手動読込のCallback、ロード先/依存、ビルドの実表示を確認。
UIの角・向きが変Allow Rotation、Sprite形状/Border、Padding・フィルター・圧縮を同じ表示で確認。
描画数が減らない対象のTexture/Material/Shader、Sorting・Mask、SRP Batcher等の描画条件を確認。
V1から戻したいV2→V1変換を前提にしない。移行前のバックアップ/設定を復元する。

V1を移行する場合は公式のアップグレード手順でバックアップとSprite Atlas V2 – Enabledを確認します。Editor Modeを変えてV2をV1へ戻せると判断しません。今回、移行・パッキング・ビルド・性能の実行検証は未実施です。旧版も新しい版も、条件を記録した少数対象から確認してください。

次の関連画像は元記事から保持した資料です。現在のV2を実行した記録として数えません。

2Dとスプライトの記事は、ほかにもあります。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次