終了ボタンを押して、パネルを表示。Yesに進むとゲームは閉じて、Noに進むとパネルが非表示。
Unityで開発したゲームを配布・販売するには、プロジェクトをビルド化します。
その後ゲームを立ち上げると、フルスクリーン化して閉じるボタンがないため、
ゲームを終了させることができなくて困った経験があるでしょう。
読者の方がユーザーとしてゲームをするときは、画面内にゲーム終了ボタンがあるので、
ゲームを閉じることができます。
しかし、そのシステム(スクリプト)は、開発者が実装しなければいけません。
本記事では、プロジェクトの終了できない人に向けて、終了時の処理するイベントを紹介します。
- ビルドしたUnityプロジェクトを終了する方法を知りたい
- ゲーム終了システムを導入したい
ゲーム終了する方法
ゲームを終了する方法は開発者としてではなく、
プレイするユーザー側の視点で設置しなければいけません。
ゲームの終了方法が分かりにくい。
ややこしい場合は、プレイヤーは不快な気持ちになります。
しかしながら、ゲームの終了方法は、ユーザーによって異なります。
例えば、タイトル画面にあるボタンで終了する者。
スマホの場合、アプリのタブを廃棄して終了。
PCの場合、コマンドキーを使って終了。
色々な終了パターンでセーブを保存できるようにしないと、
データが消滅してしまいユーザーが離れる原因になります。
開発者はあらゆる終了パターンを想定して、セーブシステムを作らなければいけません。
ショートカットキー(開発者向け)
Unityでビルドしたゲームを最も簡単に終了する方法は、ショートカットキーを使用することです。
「ALT」+「F4」
2つのキーを同時押しすることで、閉じることができます。
例えばWindowsで保存する場合は、「Ctrl」+「S」を同時押しします。
CtrlキーはCmdキーに相当するので、
Macで保存する場合は「Cmd」+「S」の入力で同じ処理がされます。
WindowsでのAltキーは、MacのOptionキーに相当します。
しかし、「Option」+「F4」でゲームを終了できません。
Macには、Windowsのように閉じるコマンドキーは設定されていません。
ショートカットキーによる終了は、Unityを開発している人しか知らないものです。
さらに、普段からコマンド入力をしていなければ、開発者でも知らないことでしょう。
したがって、ショートカットでゲームを終了させることをメインにするのはやめましょう。
UIボタンで終了
UIボタンを使った終了であれば開発者だけではなく、
ゲームをするユーザーにも認知されるので、こちらを使うことをおすすめします。
アプリケーション(ビルドしたゲーム)を終了させる方法は簡単で、
Application.Quitを使用するだけです。
このApplication.Quitを使ってUIボタンを押すと、ゲームを終了するスクリプトを書きます。
ソースコード
using UnityEngine;
public class QuitBtn : MonoBehaviour
{
public void Click() {
Application.Quit();
}
}
思い通りのゲームが作れない
Unityでゲーム開発しているけど完成しない。
技術的な壁や知識不足が原因で、思い描いたゲームを実現するのは難しいです。
しかし、Udemyは動画で実践的なゲーム開発を解説していて、
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで学習できます。
Unityの機能を網羅したいや作りたいゲームがある人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を3つ紹介します。
ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)
Unityのはじめの一歩としておすすめ。開発例に物理挙動やアニメーションを使用しているので、今後の開発が円滑になる。
トランプを題材にした講座。カードゲームやボードゲーム開発に応用可能
UnityエンジンのインストールやC#の文法に加えて、App StoreとGoogle Playにゲームをリリース方法を解説。
容量不足を解消
Unityのプロジェクトは1.5GB~3.5GBと大きく、クリエイターはHDD・SSD増設が必要です。
価格 | 耐久性 | 静音性 | 読み書き | サイズ | |
HDD | 低 | 低 | 低 | 遅 | 大 |
SSD | 高 | 高 | 高 | 速 | 小 |
注目点は、HDDは安価だけど壊れやすい。SSDは丈夫だけど高価。
したがって、データの持ち運びをしない場合はHDD、持ち運びする場合はSSDがおすすめです。
- 据え置きHDD
- 外付けSDD
- 内蔵SSD
ぜひ、あなたのクリエイティブな作業環境に兼ね備えたストレージをお役立てください。
解説
ボタンがクリックされたときに呼び出したいので、publicでClickメソッドを作成してください。
Click メソッド内で呼び出されると、
Applicationクラスの Quitメソッドを呼び出し、アプリケーションを終了します。
実演
HierarchyウィンドウからUIボタンを追加してください。
UIボタンを選択し、Inspectorウィンドウの「On click」でClickメソッドをアタッチしてください。
Applicationクラスの Quitメソッドは、ビルドしたプロジェクトのみで動くので、ビルドしてください。
ビルドしたプロジェクトを立ち上げて、表示されたボタンを押してください。
終了されると、スクリプトは正常に動作しています。
終了確認のウィンドウを表示
UIボタンで終了を実装できましたが、うっかりゲームを終了するボタンを押してしまうことがあります。
押し間違いで何度もゲームを開いているとユーザーからすればストレスに感じます。
そこで、終了確認するウィンドウ(パネル)を表示して、「YES」の押下でゲームを閉じる。
「NO」の押下でゲームを続けるようにします。
ソースコード
using UnityEngine;
using UnityEngine.UI;
public class QuitGame : MonoBehaviour
{
public GameObject quitPanel;
public GameObject quitButton;
public Button yesButton;
public Button noButton;
private void Start()
{
quitPanel.SetActive(false);
// ボタンにリスナーを追加
yesButton.onClick.AddListener(QuitGameYes);
noButton.onClick.AddListener(QuitGameNo);
}
// クリックされたときに呼び出されるメソッド
public void OnQuitButtonClick()
{
quitPanel.SetActive(true);
quitButton.SetActive(false);
}
// Yesボタンがクリックされたときに呼び出されるメソッド
public void QuitGameYes()
{
Application.Quit();
}
// Noボタンがクリックされたときに呼び出されるメソッド
public void QuitGameNo()
{
quitPanel.SetActive(false);
quitButton.SetActive(true);
}
}
解説
初めに名前空間を定義します。
UIボタン・パネルを使用するので、using UnityEngine.UI;を追加してください。
using UnityEngine;
using UnityEngine.UI;
Inspectorで編集可能にするために、publicな変数として、「quitPanel」・「quitButton」 ・「yesButton」・「noButton」を指定します。
「quitPanel」・「quitButton」は表示・非表示でSetActiveを使いたいので、GameObject。
「yesButton」・「noButton」はAddListenerで、ボタンにリスナーを追加してメソッドを実行したいので、Button。
public GameObject quitPanel;
public GameObject quitButton;
public Button yesButton;
public Button noButton;
Start()メソッドでは、終了確認ダイアログを非表示にし、
YesボタンとNoボタンにそれぞれ終了処理と非表示処理を関連付けるリスナーを追加します。
private void Start()
{
quitPanel.SetActive(false);
yesButton.onClick.AddListener(QuitGameYes);
noButton.onClick.AddListener(QuitGameNo);
}
OnQuitButtonClick()メソッドは、終了ボタンがクリックされたときに呼び出されるメソッド。
終了確認ダイアログを表示し、終了ボタンを非表示にします。
public void OnQuitButtonClick()
{
quitPanel.SetActive(true);
quitButton.SetActive(false);
}
QuitGameYes()メソッドは、Yesボタンがクリックされたときに呼び出されるメソッド。
Application.Quit()を呼び出してゲームを終了します。
public void QuitGameYes()
{
Application.Quit(); // アプリケーションを終了する
}
QuitGameNo()メソッドは、Noボタンがクリックされたときに呼び出されるメソッドで、OnQuitButtonClick()メソッドとは対の関係にあります。
終了確認ダイアログを非表示にし、終了ボタンを再表示します。
public void QuitGameNo()
{
quitPanel.SetActive(false); // 終了確認ダイアログを非表示にする
quitButton.SetActive(true); // 終了ボタンを再表示する
}
実演
Hierarchyウィンドウにパネルを設置してください。
Inspectorウィンドウにスクリプトをアタッチしてください。
パネルの配置後、終了ボタン、パネル。
パネルに従属するYESとNOボタン2つをそれぞれアタッチしてください。
次に、終了してパネルを呼び出すように、終了ボタンのOnClickをアタッチしてください。
実行をすると、冒頭で紹介したように終了ボタンを押すと、パネルが出現。
YESを押すと、ゲームが終了。NOを押すと、パネルが非表示になります。
まとめ
Unityでゲームを終了するには、Application.Quitを使います。
プロジェクトを閉じやすくすることは、ユーザーがゲームに対して好印象を持つ大事な要素になります。
ゲームの終了方法はさまざまあり、閉じ方はユーザーごとに異なります。
あらゆる手段を想定して、セーブデータが損失しないように開発をしてください。