スライスされたスプライトシートのスプライトを表示する方法

46 views
Skip to first unread message

大鳥こはく

unread,
Sep 18, 2025, 7:33:41 PMSep 18
to 宴ユーザーグループ
のバージョン: 3.12.8
・UnityのバージョンとOS: Unity6000.2.4f1 Windows 10
・Unityの習熟度: 中級者。プログラムはできます。

添付画像のようなスプライトシートで、スライスされている個々のスプライトを宴で表示することはできますか?
やりたいことは、Avatar機能でキャラクターの差分を表示したいのですが、AvatarアセットのDataListフォルダにスプライトシートを置いても、スプライト画像全体が表示されてしまいます。


以上よろしくお願いいたします。

大鳥こはく

unread,
Sep 18, 2025, 7:37:07 PMSep 18
to 宴ユーザーグループ
画像添付できないみたいなので、参考リンクを記載いたします。
スプライトシートの例:
https://cdn-ak.f.st-hatena.com/images/fotolife/g/goodbyegirl1974/20170326/20170326205306.png

2025年9月19日金曜日 8:33:41 UTC+9 大鳥こはく:

マッドネスラボ

unread,
Sep 18, 2025, 9:10:02 PMSep 18
to 宴ユーザーグループ
すみません。デフォルトの状態ではできません。

一応内部的にはspite単位で管理されているので・・・

・インスペクターウィンドウの右上の「」→「Debug」で、インスペクターウィンドウをデバッグ表示(エディタ拡張を無効化して内部データの素の状態で表示)する。
ss_1152.png

・デバッグ表示状態で、アバターデータの「Categories」の各要素のSprites以下にSprieを設定をする
ss_1153.png

…というやり方で一応スプライトの設定は可能です。


ただ、これはあくまで内部データをハック的に変更しただけです。
デバッグ表示を解除して、元の状態に戻してから改めてアバターデータを編集してもうまくいかなくなると思います。
・Apply等でデータを読み込みしなおしても、設定したスプライトがリセットされてしまう
・プレビュー表示上に、追加したスプライト名は表示されない
などであまり意味がないかもしれません。

また、元の画像のサイズは全て一致している前提になっています。
アバターの場合はどの位置に表示するかという微調整は考慮されておらず、その仕組みがありません。
(元の画像のどのあたりに描かれているかというのをそのまま流用する形になります)
そのため、仮にSpriteSheetのスプライトを追加できるようにしたとしても、そのスプライトをどこに表示するかという微調整はできない形になります。
たとえば、顔のSpriteSheetがあったとしても、顔の位置に微調整して設定するための表示位置データのようなものはないということです。



2025年9月19日金曜日 8:37:07 UTC+9 kohaku...@gmail.com:

マッドネスラボ

unread,
Sep 18, 2025, 9:22:30 PMSep 18
to 宴ユーザーグループ
上記のサイズの点が問題なく、正式にSprite単位でデータを追加したい場合は
宴の本体の拡張が必要になりますのでご連絡ください。


2025年9月19日金曜日 10:10:02 UTC+9 マッドネスラボ:

大鳥こはく

unread,
Sep 18, 2025, 11:08:11 PMSep 18
to 宴ユーザーグループ

ご回答ありがとうございます。
Debug表示で、スライスされたスプライトを設定できることを確認できました。
ただ、スプライトはすべて同じサイズではなく、表情差分など小さいスプライトも含まれていますので、現時点での拡張は結構です。

なお、補足として背景をお伝えしますと、UnityのPSD Importerでpsdファイルをインポートするとスプライトシートに変換されるため、それをそのまま利用したいという意図があります。
PSD Importerを使用している理由は、今回使用している画像は2Dボーンアニメーション用のスプライトで、このシステムではPSD Importerの使用が推奨されているためです。
https://www.youtube.com/watch?v=KNJdoprRR7s

そこで新たなご質問なのですが、宴ではこのような2Dボーンアニメーション用のスプライト(パラパラアニメではなく、体の部位ごとにスプライトが分割されている)の表示はどのように行ったらいいのでしょうか?

2025年9月19日金曜日 10:22:30 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 18, 2025, 11:38:06 PMSep 18
to 宴ユーザーグループ
>2Dボーンアニメーション用のスプライト

その用途であれば、2Dプレハブを使うほうがスムーズかと思います
https://madnesslabo.net/utage/?page_id=8864

宴のアバターやダイシングは、どちらかというと2Dイラスト表示のためのものなので、ボーンアニメーション等には対応していません。
2Dプレハブなら、Animatorが設定されていれば名前指定でモーションを切り替えることが可能です。

また、SendMessageByNameやBroadcastMessageByNameコマンドと組み合わせることでシナリオ上からコマンド形式で細かな制御も可能になりますので、
おそらくアバターやダイシング形式よりも柔軟に制御可能かと思います。

使用する場合は、SendMessageByNameやBroadcastMessageByNameコマンドで送信されるメッセージを受け取れるような形で制御コンポーネントを作成し、
2DプレハブにそのコンポーネントをAddComponentしておく形になります。




2025年9月19日金曜日 12:08:11 UTC+9 kohaku...@gmail.com:

マッドネスラボ

unread,
Sep 18, 2025, 11:43:17 PMSep 18
to 宴ユーザーグループ
また、宴の2Dプレハブ形式よりももっと柔軟にしたい場合は、独自形式のプレハブを表示するように拡張するという方法もあります。

これは、Spineを使用する際の例ですが、Spineに限らず独自形式のプレハブ表示をしたい場合があれば参考にしてみてください。
2025年9月19日金曜日 12:38:06 UTC+9 マッドネスラボ:

大鳥こはく

unread,
Sep 21, 2025, 8:07:06 AM (12 days ago) Sep 21
to 宴ユーザーグループ
ご回答ありがとうございます。
2Dプレハブでやってみようとおもいます。
ちなみに3Dプレハブという機能もあったのですが、2Dプレハブとの違いは何なのでしょうか?
ぱっと見は全く同じ機能に思えました。素のUnityだとプレハブには2Dと3Dの区別はなかったように思います。

以上よろしくお願いいたします。


2025年9月19日金曜日 12:43:17 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 21, 2025, 8:59:28 AM (12 days ago) Sep 21
to 宴ユーザーグループ
2Dプレハブ版のほうは、SpriteRenderを使ってる前提になります。そのため、宴の描画順の設定(SortingOrderやSortingLayer)などが自動的に設定される機能などが組み込まれています。
3Dプレハブのほうは、2Dの描画順設定がないのでそういったことはしません。

Unityのプレハブ機能自体はおっしゃる通り、特に2Dや3Dの違いはないです。


2025年9月21日日曜日 21:07:06 UTC+9 kohaku...@gmail.com:

マッドネスラボ

unread,
Sep 21, 2025, 9:01:24 AM (12 days ago) Sep 21
to 宴ユーザーグループ
すみません。訂正です。

×誤  宴の描画順の設定(SortingOrderやSortingLayer)
○正  宴の描画順の設定(LayerシートのOrder)


2025年9月21日日曜日 21:59:28 UTC+9 マッドネスラボ:

大鳥こはく

unread,
Sep 23, 2025, 5:27:49 AM (10 days ago) Sep 23
to 宴ユーザーグループ
了解しました。ご回答ありがとうございます。

2025年9月21日日曜日 22:01:24 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages