SpriteをCharacterの上に表示したい

76 views
Skip to first unread message

KK

unread,
Mar 21, 2025, 8:53:30 AMMar 21
to 宴ユーザーグループ
非常に基本的な質問だと思いますが、調べても試してみても分からなかったのでお聞きします。

宴4/Unity6を使っています。


上記リファレンスに記載のある通り、スプライトをキャラクターの上に表示したいです。SprteのArg3にCharacterレイヤーを指定しても、スプライトがキャラクターの下に表示されてしまいます。用途としては、漫符(怒りマークなど)をキャラクターの上に重ねるように置きたいのですが、キャラクターの背後に表示されてしまいます。

Z値やOrderなどいろいろ変更したのですが、変化がありませんでした。

お忙しいところ大変恐縮ですが、ご教授いただけますと幸いです。

マッドネスラボ

unread,
Mar 21, 2025, 9:04:22 AMMar 21
to 宴ユーザーグループ
通常の表示形式(FileType)であれば、同じレイヤー内にあるものは描画コマンドを使った順番に表示されるようになります。

FileTypeが2Dプレハブや3Dの場合は、そのままだと表示順番を制御しづらくなるので
テクスチャ書き込みを使ってみてください。


2025年3月21日金曜日 21:53:30 UTC+9 KK:

KK

unread,
Mar 21, 2025, 9:34:14 AMMar 21
to 宴ユーザーグループ
すぐのご回答ありがとうございます。
2dプレハブを使っているため、描画順をコントロールできていなかったようです。ご指摘の通り、2dプレハブのMap to Render TextureをOnにするとSpriteを前に持ってくれるのですが、できればOFFのまま進めたいと思っております。もしも2Dプレハブより前にSpriteをテクスチャ書き込みをOFFのまま実現できる妙案がございましたら教えてください。
難しそうであれば、諦めて他の方法論を考えようと思っております。

2025年3月21日金曜日 22:04:22 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 21, 2025, 10:28:04 AMMar 21
to 宴ユーザーグループ
了解しました。
2DプレハブのSortngOrderを調整できるようにするコンポーネントを追加しました。
添付のパッケージファイルを適用してください。
(ダウンロードした添付ファイルの拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)
この変更は、次回の宴のアップデートにも反映させる予定です。

パッケージを適用すると、Utage/Scripts/ADV/Graphic/Object/CustomEvent/Adv2DPrefabSortingOrder.cs というコンポーネントが新しく追加されますので、
これを2DプレハブにAddComponentしてください。

ss_0492.png

通常は、2Dプレハブの描画順(Order In Layer )は、宴のレイヤーシートで設定した「Order」と同じ値になります。
今回追加したAdv2DPrefabSortingOrderを使うと、「OffsetSortingOrder」に設定した値がOrderの値に加算されるようになります。
同じレイヤーのほかのオブジェクトよりも奥に描画したい場合は、-1などのマイナス値を。手前に表示したい場合は、1などのプラス値を設定してください。

注意点として
今回の 「OffsetSortingOrder 」 によって-1などされたOrderの値が、ほかのレイヤーのOrderと重複してしまうと描画順が再び混乱してしまうので
宴のレイヤーシートで設定で、レイヤーのOrderは10刻みや5刻みにするなどして、ある程度数字の感覚を開けるようにしてください。




2025年3月21日金曜日 22:34:14 UTC+9 KK:
Custom2DPrefabSortingOrder.unitypackage
Message has been deleted

マッドネスラボ

unread,
Mar 21, 2025, 6:20:38 PMMar 21
to 宴ユーザーグループ
すみません。
ファイル名が少し間違っていた可能性があるので、もしかするとUnityのバージョンによっては正常に働かない可能性があります。
修正しましたので、添付のパッケージファイルを適用してください。

パッケージを適用すると、
Assets/Utage/Scripts/ADV/Graphic/Object/CustomEvent/以下に
IAdvGraphicEventSortingOrderと
IAdvGraphicSortingOrder.cs
というファイルが作成されます。

IAdvGraphicSortingOrder.csのほうは、前回のパッケージで間違った名前を付けてしまったファイルなので、
中身を空のファイルにしました。
そのままでもエラーは出ないと思いますが、不要なので削除してしまってください。
(.unitypackageの適用ではファイルの削除やファイル名の変更ができないため、手動でお願いします)

ss_0493.png

2025年3月21日金曜日 23:28:04 UTC+9 マッドネスラボ:
Fix2DPrefabSortingOrder.unitypackage

KK

unread,
Mar 21, 2025, 11:37:10 PMMar 21
to 宴ユーザーグループ
昨日からエラーが起きているのですが、

Assets\XX. Utage\Scripts\ADV\Graphic\Object\Prefab\AdvGraphicObject2DPrefab.cs(41,55): error CS0246: The type or namespace name 'IAdvGraphicEventSortingOrder' could not be found (are you missing a using directive or an assembly reference?)

パッケージをインポートすると上記のようなエラーが起きてしまいます。パッケージを置く場所がおかしいのでしょうか?

2025年3月22日土曜日 7:20:38 UTC+9 マッドネスラボ:

KK

unread,
Mar 21, 2025, 11:41:38 PMMar 21
to 宴ユーザーグループ
2025年3月22日土曜日 12:37:10 UTC+9 KK:
スクリーンショット 2025-03-22 123929.png

マッドネスラボ

unread,
Mar 22, 2025, 12:14:26 AMMar 22
to 宴ユーザーグループ
おそらくですが「Utage」の置き場所を変えてしまっているため、エラーが起きています。
Unityの .unitypackageは、基本的に上書きしかしてくれないので、
適用したパッケージ内に新しくファイルが追加されていると、そのファイルは元々の置き場所に置かれるようになります。
(これはUnityの仕様なのでアセットストアの開発者側では対応することができません)

なので、新しく追加されたファイルを移動先のフォルダに手動で移動すればエラーは解消されると思います。
Assets\ Utage\Scripts\ADV\Graphic\Object\CustomEven/ 以下にあると思いますので、
Assets\XX. Utage\Scripts\ADV\Graphic\Object\CustomEvent に移動してください。
IAdvGraphicSortingOrder.csは不要なので削除してください。




2025年3月22日土曜日 12:41:38 UTC+9 KK:

KK

unread,
Mar 22, 2025, 1:59:11 AMMar 22
to 宴ユーザーグループ
初歩的な質問であり、大変失礼しました。私がutageという上流のフォルダの名前を変えていたために、自動で上書きしてくれたなかったようです。
こちらのエラーは解決いたしました。

しかし・・・

スプライトを上に表示することが依然できておりません。
おそらく私の方で変えられるパラメーターなどはすべて試したと思うのですが。

ちなみにですが、今回送っていただいたパッチファイルは file type が custom でも作動しますでしょうか?

2025年3月22日土曜日 13:14:26 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 22, 2025, 4:04:23 AMMar 22
to 宴ユーザーグループ
>スプライトを上に表示することが依然できておりません。
2DPrefabを使っているのであれば、表示中のオブジェクトのインスペクターを見て、Spriteの「Order In Layer」が意図通りになっているか確認してみてください。


> file type が custom でも作動しますでしょうか?
いえ、できません。
Customの場合は、描画順に関しては独自にプログラムして設定しているはずなので、そのプログラムの内容次第になります。
逆にいえば、Customの場合は宴側での更新は必要なく、独自に自由に調整可能です。



2025年3月22日土曜日 14:59:11 UTC+9 KK:

マッドネスラボ

unread,
Mar 22, 2025, 4:27:10 AMMar 22
to 宴ユーザーグループ
他に考えられるとしたら、
プレハブの子オブジェクトなどにSpriteがあるケースだと、
描画順の設定やフェード処理がうまく働いてないとおもいます。

スプライトが子オブジェクトにあったり複数のスプライトがある場合を想定していないので、そのような結果になります。



2025年3月22日土曜日 17:04:23 UTC+9 マッドネスラボ:

KK

unread,
Mar 23, 2025, 1:53:54 AMMar 23
to 宴ユーザーグループ
2Dプレハブはご提供いただいたパッチで、Customについてはスクリプトを見直そうと思います。
ご尽力いただきありがとうございました。

2025年3月22日土曜日 17:27:10 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages