アバター


あらかじめ体や顔などパーツごとに分けて作成されたテクスチャを組み合わせて表示します。
他の表示形式比べて描画負荷とメモリ負荷が高いので、パーツを組み合わせた表示が必要ない場合はダイシングなどほかの形式のほうが軽く描画することできます。

対応バージョン

Version3以上

設定シートサンプル

CharacterやTextureのFileTypeをAvatorと入力するとアバター形式の描画オブジェクトになります。

サンプルシナリオ

アバター素材の作り方

テクスチャを作成

・Resources以下ではない、任意のフォルダに素材を置き場を作る。
Resources以下に置くとUnityの仕様上、Spriteのパッキング処理ができなくなります。
・同一の描画順の素材は、同じフォルダに置く
・素材のサイズはすべて同じにする
・全て透明(非表示)の場合は、単純にその名前の素材を作らないだけ。
「全て透明な素材」というのはUnityの仕様上Spriteとして扱えません。

_(アンダーバー)による命名規則

(アンダーバー)で区切られた素材は、口パクなどの「アニメーションのバリエーション素材」として認識されます。
それ以外の用途では、
(アンダーバー)は使わない。
また、日本語はMacで文字化けしやすいので非推奨(ここに限らずUnity全てで共通の話)

Avator用のScriptableObjectを作成

プロジェクト名/Resources/プロジェクト名/Texture/Characterフォルダを選択し、
右クリック > Create > Utage > AvatorData

カテゴリタグを設定

カテゴリ識別用のタグを作ります。
例えば髪の素材が、体の手前に描画する「HairFront」と、後ろに描画する「HairBack」に分かれている場合
「hair」という共通のタグを持つことで、「hairのカテゴリ」として扱えるようになります。
デフォルトでは、body、face、eye、lip、hair、accessoryタグを用意しています。

オプション表示タグを設定

「メガネ」や「髪飾り」のようにアクセサリーとして使うようなもの、
つまり任意に表示をオンオフしたい素材には、OptionTagで設定したタグを設定してください。
デフォルトではaccessoryがタグが設定されています。
(ただし、これは拡張機能を想定している機能のため、標準ではまだエクセル上からオンオフしたりする機能がありません)

素材フォルダを設定

DataListに素材をフォルダを設定していきます。
・右下の+ボタンでフォルダのリストを追加
・Folderに、素材フォルダを設定。
・Tagに、カテゴリタグを設定
・データの順番が描画順となる(上にあるものが奥、下にあるものが手前)。ドラッグアンドドロップで入れ替え可能

インポートとApply(適用)

データの設定が終わったら、素材のインポートとApplyをします。

Reimport Resources

元の画像素材にSpriteとしてのインポート設定をします。
基本的には最初の一回だけで良いですが、素材の追加などをしたときはReimportResoucesをし直してください。

Apply

描画順やカテゴリの設定などを読みこみます。
Applyをしないと実際の描画に反映されないので注意してください。

プレビュー

プレビューで描画結果を確認できます。
カテゴリタグごとに、描画するデータ名を設定します。Noneの場合は非表示になります。

Characterシートでの設定

FileNameに、作成したAvatorDataのファイルパス、FileTypeをAvatorと入力するとアバター形式の描画オブジェクトになります。

どの表示パターンでどういう組み合わせを使うかは、このようにカテゴリ名の列を追加し、それぞれに名前を設定します。

テクスチャ描き込み

アバターの場合はテクスチャ書き込み設定をすると、フェードやトランジションが使えるようになります。
反面、書き込み先のテクスチャのぶんメモリ消費は倍増するので、低スペックな環境などでは注意をしてください。

テクスチャ描き込みなし

フェードの際にパーツの重なっている部分が透けてしまう

テクスチャ描き込みあり

いったんテクスチャに描き込むことで、フェードを綺麗にできる

ルール画像ときのフェード(トランジション)も使用可能に

目パチ、口パクの設定

それぞれ以下を参考に、目パチ、口パクのアニメーションデータを作成してください。
EyeBlinkシート
LipSynchシート

Spriteのアトラス化

Unityには、Spriteを1つのテクスチャにパッキングしてファイルサイズや使用メモリを削減する手法があります。
アバター表示はこの機能を使う前提で設計されています。
アバター表示で使用するテクスチャは一度にすべてロードされるため、この機能を使わないとメモリ使用量が爆発的に大きくなるおそれがあります。

機能を有効にするやりかたは、Unity5.6以前とUnity2017以降ではやり方が違います。

Unity5.6以前

Edit -> Project Settings -> Editor の
Sprite Packer > Mode を「Always Enabled」か「Enabled for Builds」にします。
Unityのプロジェクト作成時に2Dモードで作成した場合は、デフォルトで「Always Enabled」になっているため変更の必要はありません。

さらに、前述したようにResources以下ではない、任意のフォルダに素材を置き場を作ってください。
Resources以下に置くとUnityの仕様上、Spriteのパッキング処理ができなくなります。

Unity2017以降

Legacy

これは、上記のUnity5.6以前の機能をそのまま使うためのものです。
Edit -> Project Settings -> Editor > Sprite Packer > Mode >
「Always Enabled(Legacy Sprite Packer)」か「Enabled for Builds(Legacy Sprite Packer)」にします。

SpriteAtlas

Unity2017から、SpriteAtlasというパッキング用のオブジェクトが作成になりました。
Edit -> Project Settings -> Editor の
Sprite Packer > Mode を「Always Enabled」か「Enabled for Builds」にします。

さらに、ProjectWindow内で
右クリック > Create > SpriteAtlas としてSpriteAtlas用のオブジェクトを作成します。

作成したオブジェクトを以下のように設定し、対象となるフォルダを「Object For Packing」にドラッグ&ドロップで追加します。

Sprite Atlasの詳細はUnity公式ドキュメントを確認してください
https://docs.unity3d.com/jp/current/Manual/SpriteAtlas.html