Unity のメインメニューのチュートリアル

ユーザー インターフェイス (UI) は、グラフィック、テキスト、ボタンを組み合わせたもので、楽しいゲーム体験を提供する上で重要な役割を果たします。

メイン メニューは、通常、プレイヤーがゲームをロードするときに最初に目にするものであるため、UI の最も目立つ部分の 1 つです。

このチュートリアルでは、UI Canvas を使用して Unity にメイン メニューを作成する方法を示します。

ステップ 1: メイン メニューを設計する

  • 新しいキャンバスを作成します (ゲームオブジェクト -> UI -> キャンバス)

Unity 作成キャンバス

  • Canvas -> UI -> Image (これはメニューの背景になります) を右クリックして、新しい画像を作成します。

Unity キャンバスで画像を作成

  • 新しく作成したイメージにテクスチャを割り当てます。以下の画像を使用して (右クリック -> 名前を付けて保存...)、インポート設定でテクスチャ タイプが 'Sprite (2D and UI)' に設定されていることを確認してください。

  • という新しいスクリプトを作成し、SC_BackgroundScaler という名前を付けて、その中に以下のコードを貼り付けます。

SC_BackgroundScaler.cs

using UnityEngine;
using UnityEngine.UI;

[ExecuteInEditMode]
public class SC_BackgroundScaler : MonoBehaviour
{
    Image backgroundImage;
    RectTransform rt;
    float ratio;

    // Start is called before the first frame update
    void Start()
    {
        backgroundImage = GetComponent<Image>();
        rt = backgroundImage.rectTransform;
        ratio = backgroundImage.sprite.bounds.size.x / backgroundImage.sprite.bounds.size.y;
    }

    // Update is called once per frame
    void Update()
    {
        if (!rt)
            return;

        //Scale image proportionally to fit the screen dimensions, while preserving aspect ratio
        if(Screen.height * ratio >= Screen.width)
        {
            rt.sizeDelta = new Vector2(Screen.height * ratio, Screen.height);
        }
        else
        {
            rt.sizeDelta = new Vector2(Screen.width, Screen.width / ratio);
        }
    }
}

メニューボタンを作成します。

  • Canvas を右クリックして、[Create Empty] をクリックし、名前を "MainMenu" に変更します。このオブジェクトには、メイン メニューの UI 要素が含まれます。
  • "MainMenu" オブジェクトを右クリックして、[UI] -> [テキスト] を選択し、新しいテキストを作成します。タイトルテキストになります。
  • Text をゲーム名に変更します (私の場合は "Game Title" になります)。

  • 段落の配置を中央中央に変更し、色を白に変更します。

  • 最後に、フォント サイズを大きい値 (たとえば 30) に変更し、フォント スタイルを太字に変更します。

ただし、テキストが消えていることに気づくでしょう。これは、Rect Transform の寸法が小さすぎるためです。それらをより大きな値 (例: 幅: 400 高さ: 100) に変更し、Pos Y を 50 に変更して少し上に移動します。

  • 3 つのボタンを作成し ("MainMenu" オブジェクトを右クリック -> UI -> ボタンを 3 回クリック)、各ボタンを 30 ピクセル下に移動します。
  • 各ボタンのテキストをそれぞれ "Play Now"、"Credits"、"Quit" に変更します。

  • "MainMenu" オブジェクトを複製して名前を "CreditsMenu" に変更し、その中にある "Quit" ボタンを除くすべてのボタンを削除して、そのテキストを "Back" に変更します。
  • "CreditsMenu" のタイトル テキストのフォント サイズを小さいもの (例: 14) に変更し、その位置 Y を 0 に変更して、クレジット テキストを入力します。

ステップ 2: メニューボタンをプログラムする

次に、スクリプトを作成してボタンを機能させる必要があります。

  • 新しいスクリプトを作成し、SC_MainMenu という名前を付け、その中に以下のコードを貼り付けます。

SC_MainMenu.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SC_MainMenu : MonoBehaviour
{
    public GameObject MainMenu;
    public GameObject CreditsMenu;

    // Start is called before the first frame update
    void Start()
    {
        MainMenuButton();
    }

    public void PlayNowButton()
    {
        // Play Now Button has been pressed, here you can initialize your game (For example Load a Scene called GameLevel etc.)
        UnityEngine.SceneManagement.SceneManager.LoadScene("GameLevel");
    }

    public void CreditsButton()
    {
        // Show Credits Menu
        MainMenu.SetActive(false);
        CreditsMenu.SetActive(true);
    }

    public void MainMenuButton()
    {
        // Show Main Menu
        MainMenu.SetActive(true);
        CreditsMenu.SetActive(false);
    }

    public void QuitButton()
    {
        // Quit Game
        Application.Quit();
    }
}
  • SC_MainMenu を Canvas オブジェクトにアタッチします
  • "MainMenu" オブジェクトをメイン メニュー変数に割り当てます。
  • "CreditsMenu" オブジェクトをクレジット メニュー変数に割り当てます。

最後のステップは、SC_MainMenu 関数を各ボタンにバインドすることです。

  • ボタンを選択し、"On Click ()" で (+) をクリックして新しい要素変数を追加します。

  • SC_MainMenu スクリプト (キャンバス) を含むオブジェクトをボタン "On Click ()" に割り当て、ボタンに対応する関数 (今すぐ再生ボタンの場合は「PlayNowButton()」、クレジット ボタンの場合は "CreditsButton()"、終了ボタンの場合は "QuitButton()") を選択します。 "MainMenuButton()" をクレジット メニューの [戻る] ボタンに)。

これでメインメニューの準備が整いました。

注: SC_MainMenu.cs の PlayNowButton() 関数は、"GameLevel" という名前のシーンをロードしようとします。したがって、"GameLevel" という名前のシーンがあることを確認してください。これもビルド設定に追加されます (あるいは、ロードするシーンの名前に対応するようにその行の名前を変更できます)。

UI の作成について詳しく知りたいですか? Unity でモバイル タッチ コントロールを作成する方法に関するチュートリアルを確認してください。

ソース
MainMenu.unitypackage149.67 KB