Version: 2017.4
スプライトマスク
タイルマップ

スプライトアトラス

スプライトアトラスはアセット

スプライトアトラスはエディターのメニューで作成され、プロジェクトのフォルダーにアセットとして (*.spriteatlas) 格納されます 。

統一された設定

スプライトアトラスアセットは、パックされたテクスチャの一連のテクスチャ設定が可能です。アトラスにパックされたスプライトのテクスチャ設定にかかわらず、アトラステクスチャは結局、アトラスアセットの設定に一致するものになります。

ランタイムアクセス

スプライトアトラスアセットは、ランタイムにアクセス可能です。

バリアント

ユーザーは別のスプライトアトラスアセットを作成し、それをプロジェクトの 1 つの既存のスプライトアトラスのバリアントとして宣言できます。次に、マスターのアトラステクスチャを複製し、乗数によってサイズを変更します。

Sprite Packer の設定

Sprite Packer はデフォルトで無効になっていますが、 Editor Settings (Edit -> Project Settings -> Editor) で設定できます。Sprite Packer の Mode を Disabled から以下のいずれかに変更します。

  • Enabled for Builds スプライトのパッキングをビルド専用に使い、再生モードでは使用しない場合。
  • Always Enabled 再生モードのときにはスプライトアトラスからテクスチャを解決するためにパックされたスプライトを使い、Edit モードの時は元のテクスチャからテクスチャを解決したい場合。

再生モードのときにアセットバンドルからロードしたパックしたスプライトをテストするときは、Always Enabled を使用します。

スプライトアトラスの作成方法

スプライトアトラスは Unity プロジェクトのアセットタイプの 1 つです。Project ビューで作成し、すぐに使用できます。また、メインメニューで Asset -> Create -> Sprite Atlas を選択して作成することもできます。

プロパティー

プロパティー 機能
アトラスのタイプを Master か Variant Atlas に設定します。
Include in build これを有効にすると、アトラスアセットは常にビルドに含まれます。
Allow Rotation これを有効にすると、パックするためにスプライトを回転できます。
Tight Packing これを有効にすると、長方形パッキングは行いません。
Read/Write Enabled これを有効にすると、スクリプトでテクスチャデータの読み込みが可能になります。無効にすると、スクリプトでテクスチャデータの読み込みを行うことはできません。
Generate Mip Maps これを有効にすると、ミップマップ生成が可能になります。ミップマップは縮小されたテクスチャで、画面上でとても小さくテクスチャを表示する場合に使います。
Filter Mode テクスチャをどのようにフィルタリングするかを選択します。
Platform ごとのオーバーライドパネル このセクションを使用して、デフォルトに設定できます (Default を選択します)。それから、特定のプラットフォームのボタンを押してそのプラットフォーム用にオーバーライドします。
https://docs.unity3d.com/Manual/class-TextureImporterOverride.html
Objects For Packing パックするアトラスに加えるオブジェクト。フォルダー、テクスチャ、個々のスプライトを加えることができます。

アトラスにするアセットの指定方法

スプライトアトラスには、フォルダー、テクスチャ、スプライトを指定することができます。フォルダーを丸ごとスプライトアセットに指定することができます。サブフォルダーを含むそのフォルダー内のすべてのテクスチャがパックされます。個々のテクスチャを指定するときは、定義されたスプライトすべてが含まれます。 1 つのスプライトをアトラスに指定し、同じテクスチャ内の他のスプライトを指定しないことも可能です。

  1. アセットをアトラスにするリストに加えるには、アトラスアセットを選択しリストに加えるか、インスペクターのリストにProject からドラッグアンドドロップします。フォルダー、テクスチャ、スプライトをアトラスに追加することができます。

  2. 生成されたアトラスの設定を行います。設定を変更すると、このアトラスには常に変更の印がつけられ、パックする段階で再びパックされます。

  3. パックされたアトラスは、インスペクターの Pack Preview ボタンを押すとプレビューできます。これにより、このアトラスのパッキングが始まります。パッキングが完了すると、テクスチャがプレビューセクションに表示されます。

  4. 設定が変更されたすべてのアトラスは、プレイモードに入る前にパックされます ( Always Enabled が選択されている場合)。

縮小したバリアント (HD/SD)

ユーザーは別のスプライトアトラスアセットを作成し、それをプロジェクトの既存のスプライトアトラスのバリアントとして宣言できます。次に、マスターのアトラステクスチャを複製し、乗数によってサイズを変更します。

スプライトアトラスバリアントの作成

  1. スプライトアトラスの Type を Variant に設定します

  2. アトラスを Master Atlas のフィールドで指定します

  3. バリアントの Scale 係数を設定します。値は 0.1 から 1 の範囲です。

  4. マスターでなくバリアントアトラスをデフォルトとしてバインドするには、バリアントの Include in Build オプションをチェックし、マスターのオプションのチェックを外します。

  5. 両方をチェックすると、アトラス (master/variant) のうちの 1 つをランダムに入れます。両方ともチェックを外し、後述の遅延バインドを行う場合もあります。

ランタイムのスプライト列挙

  1. 変数としてスプライトアトラスを取るカスタムコンポーネントを作成します。

  2. 任意の既存のスプライトアトラスをフィールドに指定します。

  3. プレイモードにするか、プレイヤーを実行します。

  4. 変数にアクセスします。すると、.GetSprites プロパティーを呼び出し、このアトラスにパックしたスプライトの配列を取得できるようになっています。

遅延バインド

スプライトは実行時に「パックされているが、どのアトラスも参照していない」状態で開始でき、アトラスがバインドされるまで空白で表示されます。この挙動の利点は、例えばウェブからダウンロードしたアセットバンドルなど、起動時にアトラスのソースが利用できない場合に、ユーザーが後からバインドを行うことができる点です。

呼び出しを使った遅延バインド

  1. スプライトが任意のスプライトアトラスにパックされていても、スプライトアトラスがデフォルトとしてバインドされていない場合 (例えば、Build in Include オプションのチェックが外されている場合)、スプライトはシーン内では表示されません。

  2. ユーザーはコールバック SpriteAtlas.atlasRequested を受け取ることができます。

  3. このデリゲートメソッドは、バインドするアトラスのタグと、スプライトアトラスアセットを取り込む System.Action を提供します。ユーザーは、任意の方法 (スクリプト参照、Resources.load、アセットバンドル) でアセットを読み込み、そのアセットを System.Action に使用できます。


スプライトマスク
タイルマップ