Graphic Manager内の編集とルビのサイズについて

143 views
Skip to first unread message

MM

unread,
Jan 21, 2025, 11:38:49 PMJan 21
to 宴ユーザーグループ
宴のバージョン4.1.5
unityのバージョン 6(6000.0.34f1)

はじめまして、現在宴を使ってADVゲームを制作しております。
どうしてもわからないことが出てきたため、二つほど質問をさせてください。
習熟度は、unityと宴を使う制作は初めての初心者です。

HIerarchyのGraphicManeger内のBGの設定を編集したいのですが、シーン再生中しかGraphicManeger内の項目が表示されないため、編集が保存されず編集できない状態です。
こちらどのようにすれば、保存される編集が可能になりますでしょうか?

やりたいこととしては、任意のゲーム解像度画面に対して用意した背景(4の倍数サイズ)を縮小して配置したいのですが、エクセルのスケール設定では小数点の問題もあり困難と判断したため、直接BGの項目で編集したいと考えている次第です。

1.png
aaa.png

シナリオテキスト内につけるルビについてですが、このルビはサイズの変更はどのようにすればいいのでしょうか?
ルビはマニュアルを参考につけましたが、サイズが小さくて見づらいためもっと大きく表示をしたいと考えております。

初心者的な質問で恐縮ですが、ご回答いただけましたら幸いです。
よろしくお願いいたします。

マッドネスラボ

unread,
Jan 22, 2025, 3:05:51 AMJan 22
to 宴ユーザーグループ
1
>HIerarchyのGraphicManeger内のBGの設定を編集したいのですが、シーン再生中しかGraphicManeger内の項目が表示されないため、編集が保存されず編集できない状態です。
すみません。
ノベルゲームの性質上、各表示オブジェクトは常に動的に生成、破棄をされるものとして設計されていますので、シーン内にあらかじめおいてあるオブジェクトをそのまま扱うことはできません。

>>エクセルのスケール設定では小数点の問題もあり困難と判断したため、
これは、どういう意味でしょうか?
エクセルデータのほうのScaleは少数を使うこともできますし、整数で設定することも可能です。
そのScaleの値は各表示オブジェクトのTransfromのscale値に設定されますので、試してみてください。
Unity上で設定するのと同じ結果になると思うのですが、何か別の項目の設定が必要ということでしょうか?

宴のシート設定でカバーできないことをしたい場合は、
こちらの方法でプログラム的な拡張をすることで任意の処理をさせることが可能です。

他にも、シーン内のオブジェクトをそのままは扱えませんが、プレハブ使うことはできます。
ですが、ちょっとこちらは複雑になってしまうので、まずは上記をご確認ください。

ルビは、各メッセージウィンドウの「TextMeshProNovelText」の「Ruby Prefab」に設定されたプレハブを使って表示しています。

デフォルトではルビのオブジェクトは、プロジェクト名/Prefabs/UI/Ruby にありますので、そのFontSizeを調整してみてください。
ss_0233.png

2025年1月22日水曜日 13:38:49 UTC+9 MM:

MM

unread,
Jan 22, 2025, 4:15:25 AMJan 22
to 宴ユーザーグループ
早速のご回答ありがとうございます!
大変助かります!

小数点の件ですが、現在Excelのscaleでは小数点第三位までの拡大・縮小が可能となっており、第四位以降は切り捨てなどで入力した数字が反映されない状態です。
使いたい画像の大きさが、設定したゲーム画面サイズぴったりに表示させるには小数点第四位からの数値も設定して縮小する必要があります。
しかし現状scaleが第三位までになっているため、ぴったり縮小することができません。
scaleに反映される数値を変更するなどで、小数点第四位からも設定することは可能でしょうか?

また、さらにお手間をおかけしてしまいますが、もう一つ質問させていただきたく存じます。

現在、ゲーム画面内のメニュー画面を制作しております。
チュートリアルにあるようなメッセージボックス下にsaveなどが表示されているもの(ゲームプレイ時にずっと表示されているもの)ではなく、ゲーム画面内のmenuボタン画像を押すとボタンの下にsaveなどのメニューが出てくるものを制作したいのですが、これは宴ではどのように制作すればいいのでしょうか?
マニュアルを読んだり、調べたりしましたが、unity上で制作したものを読み込ませるしかないのか・・・と考えています。
ご助言いただけましたら幸いです。

よろしくお願いいたします。
2025年1月22日水曜日 17:05:51 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jan 22, 2025, 5:03:23 AMJan 22
to 宴ユーザーグループ
> 第四位以降は切り捨てなどで入力した数字が反映されない状態です。
これは、エクセル上での表示のことでしょうか?
であれば、エクセルのセルの表示幅が狭いと省略表示になってしまうだけで、中の数字はそのまま残っているので、Unityにインポートして読み込めば省略前の数字が反映されていると思います。
エクセルの表示幅を広げれば、エクセル上でも桁数が多くても表示されるようになります。
ss_0234.png ss_0235.png




ただ、エクセル上のセルの書式設定で「数値」を使って、桁数を設定しているとその桁までしか入力できなくなってしまうので、
もしそのような使い方をしている場合は、初期設定を「標準」にするか、桁数設定を調整てみてください。
ss_0237.png

>チュートリアルにあるようなメッセージボックス下にsaveなどが表示されているもの(ゲームプレイ時にずっと表示されているもの)ではなく、ゲーム画面内のmenuボタン画像を押すとボタンの下にsaveなどのメニューが出てくるものを制作したいのですが、これは宴ではどのように制作すればいいのでしょうか?
>unity上で制作したものを読み込ませるしかないのか・・・と考えています。
これは、そのようなUIをUnity上で作成して、ボタンを押すとそのUIを開閉するようなプログラムを書いたりするほうが良いかと思います。

ごく簡易的に行うのであれば、
・AdvEngine>UIいかに、左クリック>Create>UI>Toggleで、Toggleボタンを作成する
・ToggleのOnValueChangedで、GameObject>SetActiveを設定
ss_0240.png

これでToggleボタンを押すと、Menu以下のオブジェクトがオンオフ切り替えされるようになります。
Toggleボタン以下に、チェックマークやラベル表示のオブジェクトが自動作成されますが、これは使用しないなら削除していいです。(特にLabelは古いテキスト表示形式なので削除推奨です)
表示位置等はUnity上で設定して調整してください。

2025年1月22日水曜日 18:15:25 UTC+9 MM:

マッドネスラボ

unread,
Jan 22, 2025, 5:06:59 AMJan 22
to 宴ユーザーグループ
追記:誤記の訂正

・ToggleのOnValueChangedで、GameObject>SetActiveを設定

・ToggleのOnValueChangedの、対象のオブジェクトにMenuを設定し、呼び出すFunctionにGameObject>SetActiveを設定


2025年1月22日水曜日 19:03:23 UTC+9 マッドネスラボ:

MM

unread,
Jan 22, 2025, 6:30:13 AMJan 22
to 宴ユーザーグループ
ありがとうございます!
無事画像が綺麗に表示されました。
Toggleも早速試してみて、ボタンを表示させることができました。
たびたびの追加の質問でお手間おかけして申し訳ないのですが・・・。
この後、セーブロードやバックログなどのメニューをこのボタン以下に紐づけて表示させるのは、どうすればいいのでしょうか?

2025年1月22日水曜日 19:06:59 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jan 22, 2025, 8:43:06 AMJan 22
to 宴ユーザーグループ
現状どうなっていて、何が問題になっているのかがわからないので、
>このボタン以下に紐づけて表示させるのは
これの意味がわからないです。
上記の設定で、Toggleのボタンを押すことで、Menu以下のUIの表示のオンオフができるようになりますが、そういう意味ではなくてですか?

各ボタンは、Menu>Root>Buttons以下にありますが、UnityのAutoLayout機能を使っていたりしてるので、そのままでは位置調整がしづらいのであれば
Toogle以下に新しくImageなどのUIオブジェクトを作って、それ以下に各ボタンを移動させるということも可能です。


ただ、Toggleを使ったやりかたは、「ごく単純なやり方」でしかないので、それ以上はプロジェクトごとの個別の目的に応じて、実装してください。
基本的には宴はUnityの拡張プラグインなので、まずはUnityのUIの作り方自体を調べたほうが良いかと思います。
細かな動作を思い通りに調整したいなら、自分で新しくコンポーネント(プログラム)を作成してアレンジするしかないです。
各ボタンは、MenuオブジェクトにあるUtageUguiMenuButtonsで制御しているので、これをコピペするなどして新しくプログラムを書いてみてください。
UtageUguiMenuButtonsに設定している各ボタンオブジェクトを解除したり、各ボタン各ButtonのOnClickから呼び出されるプログラムを変更してください。



2025年1月22日水曜日 20:30:13 UTC+9 MM:

マッドネスラボ

unread,
Jan 22, 2025, 8:54:41 AMJan 22
to 宴ユーザーグループ
>このボタン以下に紐づけて表示させるのは
新しくボタンを作って、それをクリックしたときの動作を設定したいという意味でしたでしょうか?

Unityでは、基本的には各ボタンを押したときの動作は、基本的には各ボタンに設定されているButtonコンポーネントのOnClickから呼び出すプログラムによって制御されています。
ss_0243.png

なので、新しく作ったボタンのクリック時の動作を設定したい場合は、
既存の同じ機能をもつボタンのOnClickと同じ設定を試してみるか、
既存のボタンに設定されているプログラムを参考に、自分でプログラムを書いてそれを呼び出すという形になります。


2025年1月22日水曜日 22:43:06 UTC+9 マッドネスラボ:

MM

unread,
Jan 22, 2025, 9:43:02 AMJan 22
to 宴ユーザーグループ
ご回答ありがとうございます!

申し訳ありません、勘違いをしておりまして、ちゃんとメニュー項目がtoggleで作ったボタンに反応しておりました。

ただ、ボタンをクリックするとメニューがオフになりますが、再度クリックしてもオンにならず、ずっとオフのままの状態です。
何かミスをしているのだろうと、自力で調べてみましたが解決せず、たびたびで申し訳ありませんがご助言いただけましたら助かります・・・。

新たなボタンの動作についても、気になっていたので解説いただき大変助かりました。
ありがとうございます。



2025年1月22日水曜日 22:54:41 UTC+9 マッドネスラボ:

MM

unread,
Jan 22, 2025, 10:15:45 AMJan 22
to 宴ユーザーグループ
状況の補足です
toggleでオンオフ切り替えのボタンを設定しましたが、inspecterでisOnのチェックマークを外して、デフォルトはオフ状態にしていてもメニュー画面が表示されています。
isOnのチェックマークを入れてデフォルトオン状態でも画面は表示されています。
いずれの状態でもボタンを一度クリックするとメニューは消えますが、再度クリックしても現れません。
デフォルトではメニューが消えたオフ状態、ボタンをクリックするとオンになる、再度ボタンをクリックするとオフになる・・・を目標としていますが、toggleの設定について調べても上記の状態について記載されているものがなく、お手上げになっております。



2025年1月22日水曜日 23:43:02 UTC+9 MM:

MM

unread,
Jan 22, 2025, 11:15:48 AMJan 22
to 宴ユーザーグループ
すみません、解決しました!
set activeのboolを選んでおりました。
無事ボタンが完成しました・・・お力添えいただき、本当にありがとうございます。
初心者もはなはだしい質問でしたが、丁寧にお答えいただけたのがとてもうれしかったです。
感謝しております、ありがとうございました!

2025年1月23日木曜日 0:15:45 UTC+9 MM:

マッドネスラボ

unread,
Jan 22, 2025, 11:21:58 AMJan 22
to 宴ユーザーグループ
ss_0247.png
ToggleのisOnはオンオフ状態の初期値になります。
その状態に合わせて、MenuのGameObjectのActiveを手動で設定してください。
ss_0246.png
(エディタ上でもfunctionの処理を呼ぶ「Editor And Runtime」というのを設定すれば、 一応自動でisOnに合わせて GameObjectのActiveもオンオフになるのですが、ちょっと癖が強いので何が起きるかを把握してないうちはあまりお勧めしないです)


ただ、これはあくまで初期状態(Toggleを押してない状態)のことなので、
基本的にはToggleを1度押したあとは、押すたびにオンオフが切り替わるはずです。





おそらくですが、functionの設定を間違えています。

Toggleの設定の説明はこうなります。
ss_0247.png

functionに設定するGameObject>SetActiveですが、実は二種類方法があります。
ss_0249.png
上段は、グレーアウトして「Dynamic bool」とあって、これはisOnのような「変化する値を自動設定する」という意味になります。

下段は、グレーアウトして「Static bool」とあって、これは下記のように「指定した固定値を常に設定する」という意味になります。
Toggleで使うと、常にオンとか常にオフとなってしまうので、Toggleの意味がなくなってしまいます。
ss_0250.png


2025年1月23日木曜日 0:15:45 UTC+9 MM:
状況の補足です

マッドネスラボ

unread,
Jan 22, 2025, 11:23:29 AMJan 22
to 宴ユーザーグループ
あ、失礼しました。
入れ違いで自己解決できていたようですね。
その設定で大丈夫だと思います。


2025年1月23日木曜日 1:21:58 UTC+9 マッドネスラボ:

MM

unread,
Jan 22, 2025, 8:12:05 PMJan 22
to 宴ユーザーグループ
遅い時間までご対応いただき、本当にありがとうございました!

ちなみに別件ですが、discordのサーバに参加しようとしたところ、招待リンクの有効期限が切れていると表示され参加できない状態になっておりました。
こちらまたご確認いただけましたら幸いです。
よろしくお願いいたします。

そして重ね重ね、初心者の質問に丁寧なご対応をいただいたこと、感謝申し上げます。
ありがとうございました!
2025年1月23日木曜日 1:23:29 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jan 23, 2025, 4:15:22 AMJan 23
to 宴ユーザーグループ
招待リンクのほう、無期限で発行しなおしました。

ご報告ありがとうございます。助かりました。


2025年1月23日木曜日 10:12:05 UTC+9 MM:

MM

unread,
Mar 10, 2025, 9:52:19 PMMar 10
to 宴ユーザーグループ
いつもお世話になっております。
以前こちらで質問して教えていただいたToggleを使用して作ったMENUボタンについて、再び質問させてください。

バックログを表示させた際、メッセージボックスとセーブロードなどのメニュー項目がオフされるようになっていますが、こちらのスレッドで教えていただいたToggleで作ったボタンもバックログ表示時にオフする方法はありますでしょうか?
現在、バックログを呼び出した際にこのToggleのボタンが表示されっぱなしになっています。
バックログ起動中は本来ボタンで呼び出すMENU項目がオフされているため、機能しないボタンだけが表示されてしまう状態です。

ちなみにセーブロード画面を呼び出すと、Toggleボタンよりも上の階層のレイヤーにセーブロード画面が表示されているのか、Toggleボタンが隠れて見えない状態になっています。
なのでセーブロード画面と同じ階層にバックログを設定してボタンが隠れるようにしてやればいいのか、それともバックログ表示の際にボタンもオフにする設定をしてやればいいのか?と悩みましたが、方法がわからなかったため質問させていただきました。

また、一枚絵が出るイベントなど、任意の箇所でこのToggleボタンをオンオフにする方法がありますでしょうか?

ご回答いただけましたら幸いです。
よろしくお願いいたします。

2025年1月23日木曜日 18:15:22 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 11, 2025, 3:53:45 AMMar 11
to 宴ユーザーグループ
>バックログを表示させた際、メッセージボックスとセーブロードなどのメニュー項目がオフされるようになっていますが、こちらのスレッドで教えていただいたToggleで作ったボタンもバックログ表示時にオフする方法はありますでしょうか?

やり方はいくつかあります。


〇その1 AdvUguiManagerのOnChangeStatusを使う
ノベルゲームのメイン画面の表示ステータスは、以下の3つがあります。
Default, //通常
Backlog, //バックログ
HideMessageWindow, //メッセージウィンドウ非表示
AdvUguiManagerのOnChangeStatusで、これが変化したときに呼ばれるイベントを設定可能です。
Utage/Sample/Scripts/SampleCustomUiState.cs がそれを使用するサンプルコードです。
これをコピペして以下のように改変するなどして、独自のコンポーネントを作ってください。

        public GameObject toggleButton;
        //UIの状態が変わったときに呼ばれる
        void OnChangeUiStatus()
        {
            switch (UiManager.Status)
            {
                case AdvUiManager.UiStatus.Backlog:
                    toggleButton.SetActive(false);
                    break;
                case AdvUiManager.UiStatus.HideMessageWindow:
                    toggleButton.SetActive(false);
                    break;
                case AdvUiManager.UiStatus.Default:
                    toggleButton.SetActive(true);
                    break;
            }
        }

〇その2 UtageUguiMenuButtonsのソースコードを参考に表示制御
バックログ中のメニュー表示のオンオフは、UtageUguiMenuButtons.csのLateUpdateで調整しています。
Engine.UiManager.Status == AdvUiManager.UiStatus.Default という部分は、通常表示の状態のみという判定で、バックログやメッセージウィンドウが非表示の場合はfalseになります。

ただし、Unityの仕様で、GameObjectのactiveがオフだったり、コンポーネントがenableがオフの場合は、LateUpdateは呼ばれないので
自分自身のオブジェクトをオフにしてしまうと、LateUpdateが呼ばれなくなってしまうので注意してください。
UtageUguiMenuButtons.csでいうと、以下の部分で表示用のオブジェクトのみオンオフを切り替えるようにしています。
//メニューボタンの表示・表示を切り替え
if (rootButtons != null)
{
rootButtons.SetActive(activeMenuButtons);
}


>なのでセーブロード画面と同じ階層にバックログを設定してボタンが隠れるようにしてやればいいのか、

描画順だけの問題で、バックログよりも奥に表示されていればよいのであれば、Unityの仕様に従って描画順を調整するだけです。
UnityのUIは、同じCanvasであれば、ヒエラルキーの順番(上から深さ優先で)で表示されるので、
添付画像のように、ToggleをSelectionとBackLogの間に置くなどしてください。
ss_0470.png


>また、一枚絵が出るイベントなど、任意の箇所でこのToggleボタンをオンオフにする方法がありますでしょうか?
シナリオ側から任意に独自の処理を呼び出いのであれば、SendMessageコマンドなどなんらかの拡張方法を使うというのが基本です。

今回のように単純にオンオフするだけでよいのであれば、
・Bool型のパラメーターを追加
・シナリオ上では任意のタイミングで、Paramコマンドを使ってそのパラメーターをオンオフする
・パラメータのオンオフと、目標のGameObjectのオンオフを一致させるコンポーネントを追加する。(下記参照)
public class SampleOnOffWithParam : MonoBehaviour
{
public AdvEngine Engine => this.GetAdvEngineCacheFindIfMissing(ref engine);
[SerializeField] protected AdvEngine engine;

// パラメータのラベル名
public string paramLabel = "paramLabel";

public GameObject target;


void Update()
{
if (!Engine.IsStarted) return;
if (!Engine.Param.IsInit) return;

target.SetActive(Engine.Param.GetParameterBoolean(paramLabel));
}
}

Paramコマンドを使うのは、簡易的な拡張ではあるのですが、
実装難易度の高いセーブデータ拡張にも自動的に対応できるので、今回のようなケースではこちらのほうが良いかもしれません。

他にも、Adv Scenario Playerの、On Begin Command などで、コマンドの実行開始時や実行終了時に拡張イベントを設定できます。
これを利用して、特定のコマンドの実行時に自動的によばれる処理などを実装可能です。
(ただ、これは制御が難しいのであまりお勧めしないです)

2025年3月11日火曜日 10:52:19 UTC+9 MM:

MM

unread,
Mar 11, 2025, 9:35:05 AMMar 11
to 宴ユーザーグループ
早速のご回答ありがとうございます!

まず先にBool型のパラメーターでToggleボタンをオンオフする方法を試してみました。
頂いたスクリプトを参照して、対象のToggleボタンにスクリプトをadd compornent、targetを対象のToggleボタンに指定してみたのですが、ずっとボタンが消えた状態になりまして、オンオフがうまく作動できていない状態です。
シナリオ上でParamを設定してもうまく作動しませんでした。
どこかの設定をミスしていると思うのですが、どこをミスしているのかわからず・・・またご助言いただけましたら助かります。

1.jpg

また、バックログ起動中にToggleボタンを非表示にする方法で、教えていただいた①のものを試してみようとしているのですが、こちらは
SampleCustomUiState.csにあるコードをコピペ
 サンプル内の

 //UIの状態が変わったときに呼ばれる
 void OnChangeUiStatus()
 {
     switch (UiManager.Status)
     {
         case AdvUiManager.UiStatus.Backlog:
             ChangeLayerVisible(false);
             break;
         case AdvUiManager.UiStatus.HideMessageWindow:
             ChangeLayerVisible(false);
             break;
         case AdvUiManager.UiStatus.Default:
             ChangeLayerVisible(true);
             break;
     }
 }

という部分をご提示いただいたものに改変
改変したスクリプトをAdvUguiManagerのOnChangeStatusに追加する(Runtime only, No Function)という手順かと思い試してみたのですが、うまくいきませんでした。

スクリプトからやるのは初心者にも届かない素人レベルなので、初歩的な躓きの質問で恐縮ですが、またご助言いただけましたら大変助かります。
よろしくお願いいたします。

2025年3月11日火曜日 16:53:45 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 11, 2025, 10:20:44 AMMar 11
to 宴ユーザーグループ
targetに設定されているのが、menubarとなっていますがそれは合っていますか?

SampleCustomUiStateをもとにしたコンポーネントは、それをつけたGameObjectのActiveがオンにならないとAwakeが呼ばれずに動作しないです。
また、GameObjectのactiveがオフだったり、コンポーネントがenableがオフの場合は、Updateが呼ばれません。

なので、基本的にはオンになっている(またはシナリオ再生後自動的にオンになる位置にある) GameObject  にAddComponentしてください。
AdvEngineオブジェクトや、AdvEngine>UIオブジェクトにAddComponentするか
画像のように、制御用のGameObjectを作成(画像のMyUI)し、それにAddComponentしてみてください。
ss_0473.png

また、UIの状態による表示非表示のオンオフと、Paramによる表示非表示のオンオフを両立させて同じスクリプトにまとめるなら
単純に同じGameObejctのアクティブをオンオフしてしまうと、片方の処理で上書きされてしまうので、もう片方の状態が反映されません。
両立させるなら、GameObjectを分けるか、以下のスクリプトのように、それぞれのオンオフ状態を保持して、その二つを使ってActiveをオンオフするようにしてください。



using UnityEngine;
using Utage;
using UtageExtensions;

public class SampleHideMenu : MonoBehaviour

{
    public AdvEngine Engine => this.GetAdvEngineCacheFindIfMissing(ref engine);
    [SerializeField] protected AdvEngine engine;

    // パラメータのラベル名
    public string paramLabel = "paramLabel";

    public GameObject target;

    //UIの状態による、表示非表示のオンオフ
    bool EnableByUiStatus { get; set; } = true;

    //Paramによる、表示非表示のオンオフ
    bool EnableByUParam { get; set; } = true;

    AdvUguiManager UiManager => Engine.UiManager as AdvUguiManager;

    void Awake()
    {
        UiManager.OnChangeStatus.AddListener(OnChangeUiStatus);

    }

    //UIの状態が変わったときに呼ばれる
    void OnChangeUiStatus()
    {
        switch (UiManager.Status)
        {
            case AdvUiManager.UiStatus.Backlog:
                EnableByUiStatus = false;
                break;
            case AdvUiManager.UiStatus.HideMessageWindow:
                EnableByUiStatus = false;
                break;
            case AdvUiManager.UiStatus.Default:
                EnableByUiStatus = true;
                break;

        }
    }

    void Update()
    {
        if (!Engine.IsStarted) return;
        if (!Engine.Param.IsInit) return;

        EnableByUParam = Engine.Param.GetParameterBoolean(paramLabel);
        UpdateTarget();
    }

    void UpdateTarget()
    {
        //UIの状態と、Paramによるオンオフが両方有効なときに表示
        target.SetActive(EnableByUiStatus && EnableByUParam);
    }
}






2025年3月11日火曜日 22:35:05 UTC+9 MM:

MM

unread,
Mar 11, 2025, 11:42:05 AMMar 11
to 宴ユーザーグループ
ありがとうございます!
ご助言いただいたおかげで両方、無事設定ができました!
(バックログ中にボタンを消すのは、単純にスクリプト内でボタン名の指定をしていないのが原因でした・・・お騒がせしましました)

いつも丁寧なサポートをいただき、本当に感謝しております。
ありがとうございました!
2025年3月11日火曜日 23:20:44 UTC+9 マッドネスラボ:

MM

unread,
Oct 26, 2025, 8:28:29 AM (4 days ago) Oct 26
to 宴ユーザーグループ
開発環境
windows11
Unity 6000.0.60f1
宴 4.2.3

いつも丁寧なサポートをありがとうございます。

以前、こちらのスレッドにて助けていただいた、toggleを使用してのメニューボタンについて再度ご助言いただきたくメッセージしました。
こちらで助けていただいたおかげで、現在ゲーム内でtoggleで作ったメニューボタンを押す→saveやloadボタンのあるメニューバーが現れるというものが実装できています。

こちらのボタンなのですが、ゲーム内でこのボタンを呼び出してタイトルに戻った場合、ボタンは非表示になります。
そこから再度ロードなり、新しくスタートなりでゲームを再開したら、メニューボタンが開いている=メニューバーが出ているままの状態(inspecterだとtoggleがis Onにチェックが入ったままの状態)になっております。

こちら、一旦タイトルに戻ったら強制的にメニューボタンがオフになる状態にするには、どうしたらいいでしょうか?

理想としては、ゲーム内でメニューボタン(toggle)をオンにして、表示されたメニューからからタイトルに戻った→ゲームを再開したとき、メニューボタンはオフになっている(メニューバーが出ていない)ようにしたいです。

titleに該当toggleをオフにするスクリプトをあててやればいいのかと考えたのですが、プログラムは素人のため余計なことをしてデータがおかしくなるのが不安でしたので、こちらにて質問させていただきました。
たびたびお時間ちょうだいして恐縮ですが、お手隙の際に再度ご助言いただけますと助かります。
よろしくお願いいたします。





2025年3月12日水曜日 0:42:05 UTC+9 MM:

マッドネスラボ

unread,
Oct 26, 2025, 5:42:07 PM (4 days ago) Oct 26
to 宴ユーザーグループ
すみません。
やり方はあるのですが、カスタムすればするほどプログラムする内容も変わっていくので、どうカスタムしてるか次第になります。

私の方で、たぶんこうだろうというサンプルを提示することはできるのですが、
サンプルパターンを複数提示した場合は、実際にどのパターンで実装しているかが私の方からは判別できなくなっていくので
実際の仕様やカスタム状況と合致しない可能性が高いと思います。


こちらの画像のように、 AdvEngine/UI以下に、独自のオブジェクト(MyUI)を作っているなら

using UnityEngine;
using UnityEngine.UI;

public class Sample : MonoBehaviour
{
    [SerializeField] Toggle toggle;
    void OnEnable()
    {
        toggle.isOn = false;
    }
}

このようなコンポーネントをAddComponentするとそのオブジェクトがオフからオンになったときに、Toggleがオフになります。
ただ、これはオブジェクトがオフからオンになったときに強制的に呼ばれます。
デフォルトだと、タイトルから画面遷移したとき以外に、コンフィグ画面から戻ったときやセーブロードの直後にも呼ばれます。

タイトル画面から画面遷移したときだけToogleを操作したいなら、
下記のようなコンポーネントを作成して、タイトル画面のボタンコンポーネントのOnClickから呼べばいいです。
using UnityEngine;
using UnityEngine.UI;

public class SampleMenu : MonoBehaviour
{
    [SerializeField] Toggle toggle;
    public void OnClickTitle()
    {
        toggle.isOn = false;
    }
}



2025年10月26日日曜日 21:28:29 UTC+9 MM:

MM

unread,
Oct 27, 2025, 1:52:59 AM (3 days ago) Oct 27
to 宴ユーザーグループ
ありがとうございます。
示してくださった画像のように、独自UI(Menubar)を作って、その中にデフォルトのmenuを移動させてメニュー機能を呼び出すtoggleを作っております。

今のところタイトルのみ強制オフできればいいと考えているので、

using UnityEngine;
using UnityEngine.UI;

public class SampleMenu : MonoBehaviour
{
    [SerializeField] Toggle toggle;
    public void OnClickTitle()
    {
        toggle.isOn = false;
    }
}

こちらのスクリプトをTitleにあてました。

  [SerializeField] Toggle toggle; Toggleの箇所は設定しているtoggleボタンネームを指定してやるものと思って、toggleボタンの名前Menubarを指定したのですが、見つからないというエラーが出てしまいました。

1.jpg

基礎的なところで躓いている素人の質問で恐縮ですが、指定にあたり必要なことがありましたらお教えいただけますと助かります。
よろしくお願いいたします。
2025年10月27日月曜日 6:42:07 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Oct 27, 2025, 3:08:14 AM (3 days ago) Oct 27
to 宴ユーザーグループ
いえ、変えなくていいです。
Toogleというのは、Toggleというコンポーネントの名前で、それを変えてはだめです。

状況がよくわからないのですが、なぜ変えようと思ったのですか?


2025年10月27日月曜日 14:52:59 UTC+9 MM:

マッドネスラボ

unread,
Oct 27, 2025, 3:31:29 AM (3 days ago) Oct 27
to 宴ユーザーグループ
Toggleの値をオフするのではなく、
メニューバー?のGameObject自体をオフにしたいのであれば、
次のように書いてください。

public class SampleMenu : MonoBehaviour
{
    [SerializeField] GameObject menuBar;
    public void OnClickTitle()
    {
        menuBar.SetActive(false);
    }
}


・TitleオブジェクトにAddComponent
・インスペクターウィンドウで追加したそのコンポーネントの「MenuBar」にタイトルボタンを押したらオフにしたGameObjectを設定する。
 (別に名前が一致してなくてもいいです)
ss_1192.png

・TitleのStartGameオブジェクトのOnClickを+して、クリック時に呼ばれるプログラムを追加
・Titleオブジェクトを設定して、作成したコンポーネントのOnClickTitleを設定

ss_1193.png


という形になります。
ただし、根本的には状況がわからないので、これで合ってるかわからないです。

2025年10月27日月曜日 16:08:14 UTC+9 マッドネスラボ:

MM

unread,
Oct 27, 2025, 8:23:38 AM (3 days ago) Oct 27
to 宴ユーザーグループ
お返事ありがとうございます。

すみません、Toggleの名前指定については、
toggle.isOn = false;
この部分と勘違いしていました。
Toggleをオフする方法を調べていたら、My toggle.isOnなどの表記があったので、指定するものと思った&Toggle toggle;とごっちゃになっていた感じです。

特に内容を変えることなく、ご提示いただいたスクリプトを作成して、menubar(タイトル画面に戻ったらis Onをfalseにしたいtoggle)以下にあるBackTitleのbuttonコンポーネントに下記のようにあててみましたが、いまだこのmenubarのback titleボタンからタイトルに戻ると、toggleはis Onにチェックマークが入った状態になります。

スクリプトは以下のものです。

using UnityEngine;
using UnityEngine.UI;

public class SampleMenu : MonoBehaviour
{
    [SerializeField] Toggle toggle;
    public void OnClickTitle()
    {
        toggle.isOn = false;
    }
}

以下の画像のように、設定しています。
inspectorはBackTitleのものです。

1.jpg

こちらはCanbas-AdvUi以下のTitleにあてるのではなく、メニューバー内にあるBackTitle(画像の箇所)にあてるでよかったでしょうか?
何かミスをしているのだろうと、あれこれ試みてみたのですが解決できませんでした。
初心者質問で何度もお手を煩わせて恐縮ですが、再度ご教示いただけますと助かります。

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

ちなみにですが、該当toggleについて具体的に述べますと

AdvEngine>UIにMenubarという名のtoggleを独自に作る→デフォルトでメッセージウインドウ下に表示されるmenuをToggleコンポーネントのOn Value Changedでオンオフできるようにする

といった手順で作成しました。
デフォルトでAdvEngine以下にあったMenuは、上記画像にあるとおり独自で作ったtoggleボタンであるMenubar以下に移動させております。
以前こちらのスレッドで教えていただいた、toggleボタンでの作り方そのままで作っております。
2025年10月27日月曜日 16:31:29 UTC+9 マッドネスラボ:

MM

unread,
Oct 27, 2025, 10:44:27 AM (3 days ago) Oct 27
to 宴ユーザーグループ
すみません、解決しました。

buttonコンポーネントでNo functionになっている部分は、No functionかmono scriptしか出ない状態でした。
スクリプトを直接ではなく、Game objectをあててやらねばならなかったのですね……不勉強ゆえにお手を煩わせて、お恥ずかしい限りです。

空のGame objectにご提示いただいたスクリプトをあてて、それをback titleのbuttonコンポーネントでSampleMenu.OnClickTitleを指定したら、無事タイトル画面にてメニューバーtoggleのis Onのチェックマークが外れました。

いつもありがとうございます。
本当に少しずつですが、丁寧にサポートいただけるおかげでやれることが増えてまいりました。
改めて、感謝申し上げます。

2025年10月27日月曜日 21:23:38 UTC+9 MM:
Reply all
Reply to author
Forward
0 new messages