trybeetle

take it slow!!

Unityでメインメニュを作成


Posted on June 23, 2018, 11:49 p.m.



SceneManagerとSetActiveを使用し、メニュー画面を作成します。

MainMenuの作成

上記の様なMenu画面を作成します。

UI -> Panel で背景を作ります。CanvasのRender Modeを -cameraに変更。Render Cameraには、Main Cameraを付与します。

UI -> Text で画面タイトルを作成します。Text欄にMain Menuと記載し、適当なフォントサイズやAlingmentを選び、BestFitにチェックを入れます。

UI -> Button でPlayボタンを配置します。まずは、ButtonのNormal ColorのAlphaを0とします。Button配下のTextのTextをPlayに記載します。また、適当なフォントサイズやAlingmentを選び、BestFitにチェックを入れます。

先ほど作成したPlayButtonを選びCTRL+Dでコピーします。ボタン名をQuitButtonとし、TextもQuitに変更し、適当な場所に配置します。

作成した、タイトルテキストとボタンを纏めたいので、Canvas内にCreateEmptyをし、名前をMainMenuと記載します。MainMenu内に、先に作成したタイトルテキストと2つのボタンをドラッグ&ドロップで含めます。


Level選択画面の作成

PlayButtonを押下した後にLevelを選択出来るような画面にします。先ほど作成した、MainMenuをCTRL+Dでコピーします。テキストやボタン名を変更し、下記の様な形にします。

また、MainMenuをセレクトしActiveな状態とし、SelectLevelsは非アクティブな状態としておきます。

Audio->Audio source を選択して、クリック時の音源を作成しておきます。Audio Clipに音声ファイルを入れておきます。


Level選択後のシーンの作成

ゲームのSceneを作成するべきですが、割愛し、Main Menuへ戻るボタンだけを配置したSceneを作成します。

Scenesフォルダ内で、Create -> Scene で新たにSceneを作成します。名前をLevel1とします。

UI -> Panel で背景を作成し、テキストとボタンを追加します。下記の様に作成します。


先に作成したLevel1のSceneをCTRL+Dでコピーし、テキストや名前をLevel2様のSceneに修正します。


Scriptの作成

Menu画面遷移のために、下記の様に記載します。


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

    public class Menu : MonoBehaviour {

        public GameObject MainMenu;
        public GameObject SelectLevels;
        public AudioSource SelectSound;

        public void Play()
        {
            SelectSound.Play();
            MainMenu.SetActive(false);
            SelectLevels.SetActive(true);
        }

        public void Quit()
        {
            SelectSound.Play();
            Application.Quit();
        }

        public void Level1()
        {
            SelectSound.Play();
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }

        public void Level2()
        {
            SelectSound.Play();
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 2);
        }

        public void Back()
        {
            SelectSound.Play();
            MainMenu.SetActive(true);
            SelectLevels.SetActive(false);
        }

        public void BackToMenu()
        {
            SelectSound.Play();
            SceneManager.LoadScene("Menu");
        }

    }

Menu Sceneの編集

CanvasのAdd componentから、先に作成したScriptを付与します。

Main MenuのGameObjectには、MainMenuを選択します。
同様に、Select LevelsにはSelectLevelsを、SelectSoundにはSelectSoundを選択します。

次に、ボタンクリック時のアクションを登録します。まずは、PlayButtonから、On Click()の + をクリックし、ObjectにはScriptを付与しているCanvasを選択します。Functionには、Menu -> Play()を選択します。

続いて、QuitButtonのアクションを登録します。上記と同様の方法で、Canvasを選択し、Menu -> Quit()を選択します。

SelectLevels画面に移り、Level1のボタンも同様にアクションを登録します。Canvasを選択し、Menu -> Level1()を選択します。Level2も同様に、Canvasを選択し、Menu -> Level2()を選択します。

Level1,2 Sceneの編集

CanvasのAdd componentから、先に作成したScriptを付与します。

続いて、Level1 Scene内のBackToMenuボタンのアクションも同様に登録します。On Click()の + をクリックし、ObjectにはScriptを付与しているCanvasを選択します。Functionには、Menu -> BackToMenu()を選択します。

Level2のSceneも同様にCanvasにScriptを付与し、BackToMenuボタンにアクションを付与します。


Build and Settingsの編集

下記の様にSceneをドラッグ&ドロップで登録します。
SceneManagerによる画面遷移には、BuildIndex + 1の様に記述しているため、並び順にも気を付けます。



以上、メニュー画面の作成についてでした。


Category:Unity
Tag: Unity C_Sharp
June 23, 2018, 11:49 p.m.

Comments