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

75 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

ももんが

unread,
Feb 18, 2026, 12:38:26 PM (5 days ago) Feb 18
to 宴ユーザーグループ
この度はサンプルをありがとうございました。
(返信が遅くなり申し訳ございません)

アバターやイベントCGでフラグOFFからONに切り替え後、無事に表示が切り替わるようになりました。
もしよろしければ 「デフォルト」の表示系のものの場合改良するならどのあたりを改良すれよいでしょうか?

また、起動中以下のようなバグが発生することがあったのでこちら報告させていただきます。
・アバターを表示している状態かつ、フラグがONの状態で立ち絵を読み込んだ際、アバターの Scaleの設定値が無視されて表示がずれる現象が発生

もしこちらも改修案とうございましたらご教授いただければ幸いです。

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

2025年11月22日土曜日 14:30:49 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Feb 18, 2026, 10:59:42 PM (4 days ago) Feb 18
to 宴ユーザーグループ
>もしよろしければ 「デフォルト」の表示系のものの場合改良するならどのあたりを改良すれよいでしょうか?
先述のサンプルは自動で変更される形になっていたのですが
ロード処理をいったん挟まないといけないので、明示的にプログラムを呼び出す形で別途サンプルを追加しました。

プログラムを 更新したので添付のパッケージファイルをインポートしてください。
(unitypackageの使い方などの詳細はこちらをご確認ください)
https://madnesslabo.net/utage/?page_id=8530#i-6
宴本体を更新する必要がありますので、宴を最新バージョン(4.2.6)にアップデートしてから適用してください。

パッケージを適用すると、Assets/Utage/Sample/Scripts/SampleExplicitConditionalGraphicSwitcher.cs というコンポーネントが追加されます。
AdvEngine以下に、新しいGameObjectを作ってこのコンポーネントをAddComponentしてください。
(既存のオブジェクトにAddComponentすると、ロード処理が衝突してしまうので避けてください)
また、前回の「SampleAutoConditionalGraphicSwitcherManager」は削除してください。
ss_1431.png


プログラムから使用する場合は、SampleExplicitConditionalGraphicSwitcherコンポーネントの以下のメソッドを呼び出してください。
        //明示的に呼び出して、オブジェクトのConditionalをチェックして表示変更を行う
        public void SwitchConditionalGraphicExplicit()


GUIのボタンでオンオフしているなどであれば、OnClickイベントに追加する形でも呼び出せます。
ss_1429.png


宴のシナリオ上から呼び出したい場合は、SendMessage系のマンドやカスタムコマンド経由でプログラムを呼び出してください。


>・アバターを表示している状態かつ、フラグがONの状態で立ち絵を読み込んだ際、アバターの Scaleの設定値が無視されて表示がずれる現象が発生
変更処理が中途半端だったので、宴本体のソースコードに更新を加えて修正しました。
これで修正されていると思います。

今回追加したSampleExplicitConditionalGraphicSwitcherと
前回のSampleAutoConditionalGraphicSwitcherManagerは、同時に使うと衝突してしまう可能性もあるので、どちらかだけ使うようにしてください。

2026年2月19日木曜日 2:38:26 UTC+9 ももんが:
SampleSwitchConditionalGraphicExplicit.unitypackage
Reply all
Reply to author
Forward
0 new messages