ShowMessageWindow、HideMessageWindowをC#から

95 views
Skip to first unread message

VOICE_NOVEL

unread,
Oct 15, 2023, 9:22:32 AM10/15/23
to 宴ユーザーグループ
いつもありがとうございます。

音声ファイルを用意したので、MessageWindowを表示/非表示をしたく思います。

WEBを調べてみたら、エクセルのファイルにはコマンドがあって、
ShowMessageWindow、HideMessageWindowがそれに該当するかと思うのですが、
これをC#のプログラムからおこないたいのですが、どのような方法があるでしょうか。


マッドネスラボ

unread,
Oct 15, 2023, 11:05:55 AM10/15/23
to 宴ユーザーグループ

//メッセージウィンドウを表示
Engine.UiManager.ShowMessageWindow();

//メッセージウィンドウを非表示
Engine.UiManager.HideMessageWindow();

になります。

2023年10月15日日曜日 22:22:32 UTC+9 VOICE_NOVEL:

VOICE_NOVEL

unread,
Oct 15, 2023, 6:47:03 PM10/15/23
to 宴ユーザーグループ
いつも本当にありがとうございます。

HideMessageWindowをすると、画面をどこでもクリックするとページが次にいく機能が無効になってしまうことに気が付きました。
HideMessageWindow状態でも、画面をクリックして次のページに行くには、どうしたらいいでしょうか。

マッドネスラボ

unread,
Oct 15, 2023, 11:49:49 PM10/15/23
to 宴ユーザーグループ
メッセージウィンドウの非表示中に改ページや文字送りを受け付けないのは宴の仕様です。
基本的なUI処理の変更は既存のプログラムをoverrideするなどして書き換える必要があります。

ただ、そこまで変更するとなると、基本設計自体を変えることになるので、
下手に変えても、逆に今度は入力処理をしてほしくない状況でも入力処理されることが起きかねなくなるので、何が起きるかわからなくなると思います。


Engine.UiManager.ShowMessageWindow();
Engine.UiManager.HideMessageWindow();
は宴システムに対しての、メッセージウィンドウの表示、非表示を切り替えるものなので、
それを使わずに、UnityのUIオブジェクトが単純に非表示になるように制御したほうがいいかもしれません。
メッセージウィンドウにCanvasやCanvasGroupを持たせてそれのactiveをオンオフするなどです。
それ自体は、Unityの基本的な機能と一般的なプログラム手法ででできるはずです。


2023年10月16日月曜日 7:47:03 UTC+9 VOICE_NOVEL:

マッドネスラボ

unread,
Oct 15, 2023, 11:58:21 PM10/15/23
to 宴ユーザーグループ
誤 メッセージウィンドウにCanvasやCanvasGroupを持たせてそれのactiveをオンオフするなどです。
正 メッセージウィンドウにCanvasを持たせてそれのactiveをオンオフするなどです。

CanvasGroupのactiveでは表示、非表示では切り替えられませんでした。


2023年10月16日月曜日 12:49:49 UTC+9 マッドネスラボ:

VOICE_NOVEL

unread,
Oct 16, 2023, 10:17:11 AM10/16/23
to 宴ユーザーグループ
いつもありがとうございます。

Canvasを親にして、SetActiveでうまくいきました。


マッドネスラボ

unread,
Oct 17, 2023, 12:55:08 AM10/17/23
to 宴ユーザーグループ
そのやり方でもよいのですが、
すみません。ちょっと補足を。

>Canvasを持たせてそれのactiveをオンオフするなどです。
「enabledをオンオフする」の間違いでした。

SetActiveはGameObject丸ごとオンオフする機能です。
enabledはスクリプト単位で機能をオンオフするものです。
通常は、enabledはそのスクリプトだけに作用するのですが、
Canvasコンポーネントは子のUIオブジェクトをすべて管理して扱うというものなので、Canvasのenabledをオフにするとそれ以下のUIすべてをオフにすることができます。
(ただし、子以下のスクリプトのUpdate等が止まるわけではないので、その点はやはりSetActiveとは違います)

基本的に宴が各オブジェクトに対して、表示、非表示を切り替える場合は、SetActiveを使っています。
この作用と衝突しないように表示のみを独自にオンオフをするには、Canvasコンポーネントを追加してenabledをオンオフすることで可能になる・・・という趣旨でした。

ただ、親オブジェクトを追加して、そちらをSetActiveでオンオフしてもそれはそれで問題ないはずです。



2023年10月16日月曜日 23:17:11 UTC+9 VOICE_NOVEL:
Reply all
Reply to author
Forward
0 new messages