「ゲームを終了する」ボタンを設置したい

167 views
Skip to first unread message

KK

unread,
Jan 31, 2025, 8:42:07 AM1/31/25
to 宴ユーザーグループ
Unity・C#ともに初心者です。

Escapeキーを押すとゲームを終了できますが、一般的なノベルゲームで見るような「ゲームを終了する」ボタンをConfig画面に設置したいです。

こちらのグループチャットやチュートリアルを探したのですが、見つからなかったため、大変基本的な質問かと思い恐縮ですが、ご教授願いたいです。

マッドネスラボ

unread,
Jan 31, 2025, 7:31:24 PM1/31/25
to 宴ユーザーグループ
> Escapeキーを押すとゲームを終了
このプログラムは、Canvas-SysytemUIオブジェクトの、SystemUiコンポーネントの「OnOpenDialogExitGame」になります。

この機能に関しては、ボタンのOnClickイベントから直接呼び出しても問題ないので、
下記のように、Config画面内に追加した「ゲームを終了する」ボタンに設定してみてください。

ss_0275.png
2025年1月31日金曜日 22:42:07 UTC+9 KK:

KK

unread,
Feb 1, 2025, 6:10:39 AM2/1/25
to 宴ユーザーグループ
上記手順で無事に実装することができました。
すぐにお返事いただき、ありがとうございました。

後学までに、また、こちらにて質問する回数を可能な限り減らすためにお伺いしたいのですが、今回「OnOpenDialogExitGame」関数が「Canvas-SysytemUI」オブジェクトの「SystemUI」スクリプトに記載されていることがわかれば、UIボタンとして「ゲームを終了する」を一人で実装できました。これに際し、チュートリアルやこちらのグループにて「ゲームを終了する」や「Application.Quit」などのキーワードで探したのですが、ヒットしなかったため、直接お聞きする流れとなりました。

もしも、こちらのグループに聞かず、自分で上記「OnOpenDialogExitGame」や「Canvas-SysytemUI」を探そうとした場合、どうすればよかったのでしょうか?
「ゲームを終了する」ボタンの実装はノベルゲームだとほぼ必須かと思うのですが、皆さんは不自由なく実装されているのでしょうか・・・「必要なオブジェクトや関数の探し方」について、初心者すぎるがゆえの疑問、質問なのかもしれませんが、ご助言いただければ幸いです。

2025年2月1日土曜日 9:31:24 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Feb 1, 2025, 8:22:29 AM2/1/25
to 宴ユーザーグループ
>「必要なオブジェクトや関数の探し方」
宴のサイト上などですべてのプログラムのリファレンスがあればより良いとは思うのですが、量が多すぎて管理しきれないのでそれはちょっと難しいです。

宴はビジュアルノベルを作成するツールではあるのですが、基本的にはUnityの拡張プラグインですので、
UnityやC#プログラムの基本的な開発手法については、UnityやC#の開発方法を学ぶしかないです。
とはいえ、「オブジェクトや関数の探し方」のようなものは、学んでいくうちに身につけていくことが多く
大抵の開発手法の説明は、ゼロから自分で組み立てていく説明をするものなので、
すでにあるテンプレートやサンプルを解析したり読み解いたりする方法は説明しているものはめったにないかもしれません。
また、経験則に頼るような形になるので人によってやり方が違うかもしれません。

そのため、あくまで「自分だったら」という回答になります。

Unityの場合、ゲーム実行中のオブジェクトがヒエラルキー画面に表示されるので、
これを頼りに目的のオブジェクトを探すのが早いかなと思います。
たとえば、今回でいえば、Escapeキーを押すとゲームを終了するダイアログが出ていることがわかっていれば、
・Gameビューウィンドウでゲームプレイをしてゲームを終了するダイアログを出す
・Sceneビューウィンドウで、ダイアログのオブジェクトを選択する(UIが重なっている場合は、連続してクリックすると選択対象が切り替わります)
・Hierarchウィンドウで、選択されたオブジェクトとその親子オブジェクトをみて、それに使用しているコンポーネントを調べる。
といった形になります。
また、Hierarchウィンドウで描画のオンオフを切り替えるなどしても、目的のオブジェクトを探しやすくなります。

ほかにも、UnityのUIシステムは必ず「EventSystem」というコンポーネントを使用して入力処理をしています。
このEventSystemのインスペクターウィンドウの下段に、選択したUIオブジェクトなどの情報がデバッグ表示されていたりします。

または、「Application.Quit」というメソッドを使っていることがわかっているのであれば、
プログラム用のエディタ(VisualStudioなど)の機能で、検索などをしてその機能を使っているソースコードをみつけることも可能です。

ソースコードがわかっていれば、それから逆引きして、それを使用してるオブジェクトやシーンを検索する機能を持つプログラム用のエディタ(Riderなど)もあって、私はこれを使うことも多いです。
(ただこれは、Unityの基本機能ではないです。初心者向きではないかもしれません)

私からはアセット開発者の視点での回答になってしまいます。
他の人がどうしているかはちょっとわからないので、こちらのコミュニティで質問してみるとよいかもしれません。



2025年2月1日土曜日 20:10:39 UTC+9 KK:

KK

unread,
Feb 1, 2025, 11:01:41 AM2/1/25
to 宴ユーザーグループ
丁寧なご助言ありがとうございます。
全ての関数等がリファレンスやコミュニティにて紹介がないことを理解したうえで、Hierarchyから徹底的に探すという方法が効率的なようですね。
「ゲームを終了するボタン」は本当に初歩的なものなのだろうと理解しつつも、必須機能だけに、同じように困っている人がいるのでは、という思いでこの度は質問させていただきました。
本当に助かりました。
今後ともよろしくお願いします。


2025年2月1日土曜日 22:22:29 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages