CharacterシートのConditional使用について

45 views
Skip to first unread message

ももんが

unread,
Nov 18, 2025, 10:01:22 AM11/18/25
to 宴ユーザーグループ
Unity バージョン: 6000.0.32f1 (Unity 6)
宴 バージョン: 4.1.6
Unityの習熟度: 初心者。プログラムはcsを軽く触れる程度(一年目)。
いつもお世話になっております。

CharacterシートのConditionalを利用して、独自パラメータの変更があった際に表示を切り替える機能を作成しようとしています。
シナリオシートを使用せず、スクリプトを作成してキャラクターの再表示を行いたいのですが、宴内の既存スクリプトで参考になる物が分からない状態です。
お手数をおかけしますがこちら参考となるスクリプトとあれば教えて頂けないでしょうか?

申し訳ございませんがよろしくお願いいたします。

マッドネスラボ

unread,
Nov 18, 2025, 7:32:40 PM11/18/25
to 宴ユーザーグループ
Conditionalの機能は、基本的には表示を開始するときに判定されるので
表示後にパラメーターを変更して、自動的に切り替わるような機能ではないです。

Conditionalとは違うのですが、公式機能として「パラメーターが変更されると自動的に表示を変える」という機能が存在するのは、
「アバター」タイプで表示している場合の、アクセサリー表示のオンオフがあります。



これ以外で行うのであれば「パラメーター変更を検知して、表示パターン変更をするプログラムを呼び出す」という形で拡張機能を実装する形になります。

1.パラメーター変更を検知
簡単に行うのであれば、毎フレーム指定のパラメーターを取得して、前フレームの値などとと比較して

パラメーターの値が変更したときのイベントを使用する場合は、次がサンプルになります。
Utage/Sample/Scripts/SampleParamTrigger.cs

2.表示パターン変更をする
これは、グラフィックオブジェクトのタイプによってやり方が異なります。

ただ、「デフォルト」(テクスチャをそのまま表示する基本的な表示)の場合は、
別のパターンを表示する場合は、そのファイルをロードしなければいけないため、
「表示パターンを切り替える」というのが難しいです。

ダイシングやアバター、プレハブ系であれば、同じファイル内に複数の表示パターンを持たせられるので、
それぞれタイプに合わせたパターン変更プログラムを呼び出すことで、表示パターンを切り替えることができます。
ただ、具体的な実装方法はやり方が違うので、
実装したいタイプを伝えていただければサンプルを書いてみます。


ただ、これらの拡張は実際に私が試した結果ではないので、実際に機能するか確認できてません。
宴のDiscordで、他のユーザーに相談すれば、もしかするとすでにそういった実装を行っている人が答えてくれるかもしれません。


2025年11月19日水曜日 0:01:22 UTC+9 ももんが:

ももんが

unread,
Nov 21, 2025, 12:30:13 PM11/21/25
to 宴ユーザーグループ
ご回答ありがとうございます。
今回の使用用途としましてはシナリオ中にコンフィグで値を変更後閉じるとキャラクター立ち絵(アバター使用)・スチルの表示変更を行いたいと思っております。
(値はParamシートに記載したものを使用)
実装方法については1と2、どちらでもよろしければサンプルを頂けると幸いです。
以上、よろしくお願いいたします。
2025年11月19日水曜日 9:32:40 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Nov 22, 2025, 12:30:49 AM11/22/25
to 宴ユーザーグループ
了解しましたサンプルを作成したので、添付のパッケージファイルを適用してください。
(ダウンロードした添付ファイルの拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)
この変更は、次回の宴のアップデートにも反映させる予定です。

ちょっと当初お伝えしていた「パラメーターの変更検知と、パターン変更」というサンプルだと、細かい部分がプロジェクトごとに固有で複雑になりすぎるので、
Conditinalの設定を毎フレーム判定する形でサンプルを作成しました。(こちらの方が汎用的に使えるかもしれません)

SampleAutoConditionalGraphicSwitcher.cs
毎フレーム今の表示に対応するConditinalを自動判定して、変化があるようなら自動的に表示を切り替えます。
切り替えるときにリソースがロード済みになっている前提なので、
テクスチャーシートの変化の前後でFileNameが同じである必要があります。
違う場合であってもアンロードされてない状態であれば使用できるのですが、それは動作保証されないです。
なので、ダイシングやアバターで使用するようにしてください。
「デフォルト」(テクスチャをそのまま表示する基本的な表示)だとFilenameを変えないといけないので、ロード処理か、アンロードしないような処理がさらに追加で必要になります。

SampleAutoConditionalGraphicSwitcherManager.cs
表示オブジェクトの作成時に、自動的に上記の「SampleAutoConditionalGraphicSwitcher」コンポーネントを各オブジェクトに追加します。

使い方:
SampleAutoConditionalGraphicSwitcherManagerをAdvEngineオブジェクトにAddComponentするだけで、自動的に処理されるようになります。

注意点:
これらのサンプルは、
・「すべてのオブジェクトにSampleAutoConditionalGraphicSwitcher」を追加する
・「SampleAutoConditionalGraphicSwitcher」は毎フレームConditionalの判定を行う
という形になっています。
(たぶん大丈夫だとは思うのですが)もっと対象を限定して負荷を軽減したい場合は、対象の名前を設定できるようにするなどしてください。

また、Conditionalを再利用する形で条件判定を行っていますが、
CharacterシートやTextureシートの一部の設定は自動変更時に反映されないです。自動変更前と同じ値のままになってしまいます。
ScaleやFilpなどです。
たぶんこの値をConditionalによって違う値を設定することはないとは思うのですが、それらの値は同じ値を設定するようにして下さい。


2025年11月22日土曜日 2:30:13 UTC+9 ももんが:
Auto Conditional.unitypackage
Reply all
Reply to author
Forward
0 new messages