top of page

2Dランゲーム編

Lesson6 クオリティを上げよう

6-1

6-1 タイトル画面の作成

6-1 タイトル画面の作成

1

タイトルシーンの
​作成

 タイトル画面を作成しましょう。やっていることは3Dアクションゲーム編とほとんど変わりません。

​ まずはTitleシーンを作成してください。

2

タイトルシーンを
​作成する

 Titleシーンを開いて、タイトル画面を自由に作ってください。

​ タイトルロゴは「Sprite」→「UI」→「Title」内にあります。

 お好みでアニメーションや素材を追加しても構いません。サンプルではテキストのa値(不透明度)を変更することで、文字が現れたり消えたりするアニメーションを実装しています。

3

ステージセレクト
​へ切り替える

 サンプルで行っているループする背景の実装方法です。アニメーションで実装する方法もありますが、ここではスクリプトを使って実装する方法を解説します。

(UVスクロールのシェーダーを書くのがベストですが、シェーダーが難しい人向けです)

 まずは背景をキャンバスより僅かに大きくしてから、右側の画面外にコピーして2枚目の背景を設置します。

 新しいスクリプトUI_BGLoopを作成して、以下のように入力してください。

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

 

public class UI_BGLoop : MonoBehaviour
{
    [SerializeField]
    Vector3 StartPos, EndPos;
    [SerializeField]
    float MoveTimer = 0.0f;
    [SerializeField]
    float MoveSpeed = 0.2f;

 

    RectTransform m_rectTransform;
 

    void Start()
    {
        // 自分のRectTransformを取得
        m_rectTransform = GetComponent<RectTransform>();
    }

 

    void Update()
    {
        // 移動処理
        MoveTimer += Time.deltaTime * MoveSpeed;

        m_rectTransform.anchoredPosition = Vector3.Lerp(StartPos, EndPos, MoveTimer);
 

        // タイマーをリセット
        if (MoveTimer >= 1.0f)
        {
            MoveTimer = 0.0f;
        }

    }
}

 処理の内容としてはVector3クラスのLerp関数を使って、開始地点から終了地点までを移動し続けるだけです。右側の画面外から左に移動し続け、左側の画面外に出たら右側の画面外に戻る…といった動作を繰り返し続けます。

 この処理を2枚の画像で行うことによって、背景がループしているように見せています。

 UIの座標を操作するときはRectTransformを取得して、そこから座標を変更するようにしましょう

 RectTransformには「position」と「anchoredPosition」の2つのパラメータがありますが、それぞれ原点の位置が異なります。positionの場合原点はキャンバスの左下になります。

 anchoredPositionの場合はキャンバス上のアンカーに指定した場所が原点になります。アンカーが中央なら、原点もキャンバスの中央になります。

 後は2枚の背景画像にUI_BGLoopスクリプトをアタッチするだけです。

 両方ともStartPos(移動開始地点)とEndPos(移動終了地点)を設定しましょう。

 また、1枚目の背景(現在キャンバス内に表示されている方)にはMoveTimerに0.5を入力してください。これによって1枚目の背景の開始地点がStartPosとEndPosの中間になります。

 これで背景のスクロール処理は完成です。他のゲームでも処理を流用できるので「UIが味気ないな…」と思ったときはぜひ実装してみてください。

 サンプルでは横の座標を決め打ちしていますが、様々なプラットフォームを考慮するなら画面サイズを取得するパラメータ Screen.width と Screen.height を使ってみてください。

Unity Tips!

 クリックされたらStageSelectシーンに切り替わるようにしましょう。

 Titleスクリプトを作成して、以下のように入力してください​。青い部分は穴埋めです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ① シーンを扱うときに必要
(ここに入力)

 

public class TItle : MonoBehaviour
{
    [SerializeField]
    GameObject FadeCanvas;
    [SerializeField]
    string SceneName;

 

    void Update()
    {
        // ② 左クリックされたらシーン切り替え処理
        if ( (ここに入力) )
        {
            string sceneName = SceneName;

 

            // 名前が空白だった場合、現在のシーンの名前を使う
            if (sceneName == "")
            {
                sceneName = SceneManager.GetActiveScene().name;
            }

 

            // フェード用のCanvasを作成
            GameObject fadeCanvas = Instantiate(FadeCanvas);
            // FadeSceneを取得してフェードを開始
            fadeCanvas.GetComponent<FadeScene>().FadeStart(sceneName);
        }
    }
}

4

タイトル用
​オブジェクト作成

 コードの内容は基本的にSceneButtonと同じになっています。

 

 コードが書けたら保存して、適当な空オブジェクトを作成してください(サンプルでは名前をTitleにしています)そして、作成した空オブジェクトにTitleスクリプトをアタッチしましょう。

 インスペクターはSceneButtonと同じように設定しておきます。FadeCanvasにはFadeCanvasのプレハブを、SceneNameには遷移先のシーン名「StageSelect」を設定しましょう。

5

タイトルシーンを
​ビルド対象にする

 最後にTitleシーンをビルド対象に設定しましょう。

​ Build Settingsを開いて、Titleシーンをリストに追加してください。

 3Dアクションゲーム編でも解説しましたが、ゲームを起動したときに最初に開くシーンは「Scenes In Build」の一番上になります。Titleシーンは開始時に開いてほしいシーンなので、ドラッグしてリストの一番上に動かしましょう。

 これでタイトルシーンの実装は完了しました。実行して、クリックすることでステージセレクトに遷移することを確認してみてください。

6-2

6-2 BGMの実装

6-2 BGMの実装

1

BGMを
​インポートする

 次はBGMを実装しましょう。

​ サンプルではLesson1でも紹介したsuperpowers-asset-packsからお借りしています。もちろん好きな配布サイトのBGMを使用しても構いません。

【サンプルで使用しているBGM】

 ・タイトル…「top-down-shooter」→「music」→「theme-4.ogg」

 ・ステージセレクト…medieval-fantasy」→「music」→「theme-5.ogg」

 ・ステージ1…「rpg-battle-system」→「music」→「theme-2.ogg」

 ・ステージ2…「medieval-fantasy」→「music」→「theme-4.ogg」

 ・ステージ3…「rpg-battle-system」→「music」→「theme-9.ogg」

【サウンド用パッケージ】

​ https://drive.google.com/file/d/1jOuxT83ODTA2K_NvV6VrBS2R3vDOoz3o/view?usp=sharing

​ Soundフォルダを作成して、その中にBGMフォルダを作成しましょう。BGMフォルダ内に使用したいBGMファイルをドラッグ&ドロップしてください。

2

BGMファイルの
​設定をする

 追加したBGMファイルのLoad Typeを「Streaming」に変更してください。

​ デフォルトではステレオ再生(複数のスピーカーで立体的に再生、音質が良い)になっていますが、今回は軽量化を優先するためモノラル再生(1つのスピーカーで再生、音質が良くない)に変更しましょう。Force To Monoにチェックを入れるとモノラル再生になります。

3

BGMをフェード
​する処理を実装

 追加したBGMをそれぞれのシーンで再生できるようにしましょう。3Dアクションゲーム編と同じように実装してもよいのですが、シーンの切り替わりでBGMがぶつ切りになると違和感があるので、画面と同じようにBGMもフェード処理するようにしましょう。

​ 新しくBGM_Managerスクリプトを作成して、以下のように入力してください。

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

 

public class BGM_Manager : MonoBehaviour
{
    AudioSource m_audioSource;

 

    // BGMのフェード
    float m_volume = 0.0f;      // 現在のボリューム
    bool m_fadeMode = false;    // フェードの種類 false=だんだん大きく true=だんだん小さく
    bool m_isFade = false;      // フェード処理中ならtrue
    [SerializeField]
    float FadeSpeed = 1.0f;     // フェードの速度(大きいほど速い)

 

    // BGMのフェード開始
    public void FadeStart(bool mode)
    {
        // 初期設定
        m_fadeMode = mode;
        m_isFade = true;

        // 自身にアタッチされているオーディオソースを取得
        m_audioSource = GetComponent<AudioSource>();

 

        // モードに応じて音量を初期化
        if (mode == false)
        {
            m_volume = 0.0f;
        }
        else
        {
            m_volume = 1.0f;
        }
    }

 

    void Update()
    {
        // フェード中でないなら中断
        if (m_isFade == false)
        {
            return;
        }

 

        if (m_fadeMode == false)
        {
            // 音量を大きくする
            m_volume += FadeSpeed * Time.deltaTime;

            // 音量を設定
            m_audioSource.volume = m_volume;

 

            if (m_volume >= 1.0f)
            {
                // 音量が最大になったら終了
                m_isFade = false;
            }
        }
        else
        {
            // 音量を小さくする
            m_volume -= FadeSpeed * Time.deltaTime;

            // 音量を設定
            m_audioSource.volume = m_volume;

 

            if (m_volume <= 0.0f)
            {
                // 音量が最小になったら終了
                m_isFade = false;
            }
        }

    }
}

4

BGM用
​オブジェクト作成

 対象がオーディオソースのボリュームになっただけで、画面のフェード処理とほとんど同じです。

 

 コードが書けたら保存して、Titleシーン内に適当な空オブジェクトを追加してください。オブジェクトの名前は分かりやすいようにBGMにしておきます。

 追加したオブジェクトに以下の設定を行ってください。

・新しいタグ「BGM」を追加して、BGMオブジェクトに設定

・BGM_Managerスクリプトをアタッチ

・「Add Component」からAudioSauceをアタッチ

​ ・AudioClipにタイトル用のBGMを設定

 ・Play On AwakeとLoopにチェックを入れる

5

BGMのフェード
​処理を呼び出す

6

プレハブ化する

 後はフェード処理したいタイミングでFadeStart関数を呼び出すだけになります。今回は画面のフェード処理に合わせてBGMもフェード処理させましょう。

​ FadeSceneスクリプトを開いて、赤い部分のコードを追加してください。

~前略~

    // フェード開始
    public void FadeStart(string sceneName)
    {
        // フェード開始の準備をする
        m_fadeStart = true;
        m_sceneName = sceneName;

 

        // 自分の子オブジェクトにアタッチされているImageを取得する
        m_image = transform.GetChild(0).GetComponent<Image>();

 

        // BGMタグが設定されたオブジェクトからBGM_Managerを取得する
        BGM_Manager bgm_Manager = GameObject.FindGameObjectWithTag("BGM").
            GetComponent<BGM_Manager>();
        // BGMを小さくするフェード開始
        bgm_Manager.FadeStart(true);

 

        // 自身はシーンをまたいでも削除されないようにする
        DontDestroyOnLoad(gameObject);
    }

​~後略~

~前略~
 

        // フェード処理
        if (m_fadeMode == false)
        {
            // 画面を暗くする

            m_alpha += FadeSpeed * Time.deltaTime;
 

            // 完全に暗くなったのでシーンを変更する
            if (m_alpha >= 1.0f)
            {
                SceneManager.LoadScene(m_sceneName);
                // 明るくするモードに変更
                m_fadeMode = true;

 

                // BGMタグが設定されたオブジェクトからBGM_Managerを取得する
                BGM_Manager bgm_Manager = GameObject.FindGameObjectWithTag("BGM").
                    GetComponent<BGM_Manager>();
                // BGMを大きくするフェード開始
                bgm_Manager.FadeStart(false);

            }
        }
        else


​~後略~

 コードが書けたら保存して、BGMオブジェクトをプレハブ化してください。ヒエラルキーから削除する必要はありません。

7

BGMを設定する

 プレハブ化したBGMオブジェクトをそれぞれのシーンに追加して、AudioClipだけはシーンに応じたものに変更してください。

 これでBGMのフェード処理は完成です。実行して、シーンが切り替わる時にBGMの音量が変化することを確認してみてください。

6-3

6-3 SEの実装

6-3 SEの実装

1

SEを
​インポートする

 SEも実装しましょう。

​ 効果音の素材もBGMと同じようにsuperpowers-asset-packsからお借りしています。種類は多いですが、こちらも好きな効果音を各自で用意してください。

【サンプルで使用しているSE】

 ・ゲーム開始…「rpg-battle-system」→「sound」→「9.ogg」

 ・ボタンクリック(ステージセレクトやゲームオーバーなど)…

   「ninja-adventure」→「sounds」→「8.ogg」

 ・ジャンプ…「ninja-adventure」→「sounds」→「18.ogg」

 ・宝石獲得…「space-shooter」→「sounds」→「gold-3.wav」

 ・磁力アイテム獲得…「ninja-adventure」→「sounds」→「power-up.ogg」

 ・矢の発射…「medieval-fantasy」→「sounds」→「woosh-1.wav」

 ・ダメージ…「rpg-battle-system」→「sound」→「12.ogg」

 ・落下…ninja-adventure」→「sounds」→「11.ogg」

 ・ゲームオーバー…「ninja-adventure」→「sounds」→「game-over-2.ogg」

​ ・ゴール…「western-fps-2d」→「sounds」→「gun-2.ogg」

 ・ゲームクリア…「rpg-battle-system」→「sound」→「33.ogg」

​ Soundフォルダ内にSEフォルダを作成しましょう。SEフォルダ内に使用したいSEファイルをドラッグ&ドロップしてください。効果音もForce To Monoにチェックを入れて、モノラル再生に変更しておいてください。

2

効果音再生用
スクリプトを追加

 今回は効率化のために効果音再生の処理を統一します。

 3Dアクションゲーム編6-2で紹介したOneShotAudioClipスクリプトをそのまま流用しましょう。過去に記述したことがある場合は、エクスプローラーからそのままドラッグ&ドロップすれば書く手間を省けます。書いていない場合は3Dアクションゲーム編6-2を確認して、スクリプトを追加してください。

3

効果音再生用
オブジェクト作成

 新しい空オブジェクトOneShotSEを作成して、先ほど追加したOneShotAudioClipとAudioSauceをアタッチしてください。

 AudioSauceコンポーネントはPlay On Awakeのチェックを外しておきましょう。

4

プレハブ化する

 OneShotSEをResourcesフォルダ内にドラッグ&ドロップしてプレハブ化しておきましょう。プレハブ化できたらヒエラルキー内のOneShotSEは削除しておいてください。

5

効果音再生処理を
​関数にする

 効果音の再生処理を関数にします

 GameManagerスクリプトを開いて、以下のコードを追加してください。関数として追加できるならコードの場所はどこでも構いません。

~前略~

    // 効果音再生関数 どこからでも呼べる
    static public void PlaySE(AudioClip clip)
    {
        GameObject oneShotObj = Instantiate((GameObject)Resources.Load("OneShotSE"));
        oneShotObj.GetComponent<OneShotAudioClip>().PlaySE(clip);
    }


​~後略~

6

ジャンプ音を再生

7

効果音を設定する

【プログラムの解説】

static public 修飾子をつけた関数は (クラス名).(関数名) でどこからでも呼べるようになります。例えば広範囲のスクリプトで同じ関数を実行したい時などに便利です。

​ これで引数に再生したいAudioClipを追加するだけで効果音を再生することが可能です。

​ 試しにプレイヤーのジャンプ音を追加してみましょう。PlayerMoveスクリプトに赤い部分のコードを追加してください。

~前略~
 

    // 演出フラグ
    bool m_claerRun, m_claerWait;

 

    // 効果音
    [SerializeField, Header("効果音素材")]
    AudioClip m_jumpSE;

 

    void Start()
    {


​~後略~

~前略~
 

    // ジャンプ
    void Jump(bool airJump)
    {
        // プレイ中でないなら中断
        if (m_gameManager.GetState() != GameManager.GameState.enGameState_Play)
        {
            return;
        }

 

        // 加わっている力を一旦リセット
        m_player_rb2d.velocity = Vector2.zero;
        // 上方向に力を加える
        m_player_rb2d.AddForce(new Vector2(0.0f, JumpPower), ForceMode2D.Impulse);
        // アニメーション
        m_animator.SetBool("FallFlag", false);
        if (airJump)
        {
            m_animator.SetBool("AirJumpFlag", true);
        }
        else
        {
            m_animator.SetBool("JumpFlag", true);
        }

        // 効果音再生
        GameManager.PlaySE(m_jumpSE);

    }


​~後略~

 プレイヤーのプレハブをダブルクリックして開き、インスペクターに表示されているm_jumpSEにジャンプ音として使用したいAudioClipを設定してください。

8

残りの効果音を
​実装する

 これでジャンプ音の設定は完了です。同じ手順で他の効果音も追加できるので、ぜひ色々なポイントで効果音を鳴らしてみてください。

 効果音のボリュームを関数で設定できるようにOneShotAudioClipスクリプトを改造しましょう。特に宝石の取得音など、音量が大きすぎると困る効果音にオススメです。
 OneShotAudioClipスクリプトを開いて、赤い部分のコードを追加してください。

~前略~

    public void PlaySE(AudioClip audioClip, float volume = 1.0f)
    {
        // 自分にアタッチされているAudioSourceを取得
        m_audioSource = GetComponent<AudioSource>();

        // オーディオクリップを設定
        m_audioSource.clip = audioClip;
        m_audioSource.volume = volume;
        // 再生
        m_audioSource.Play();
        // 再生フラグを立てる
        IsPlay = true;
    }

​~後略~

【プログラムの解説】

​・float型の引数volumeに1.0fの初期値が設定されています。​これは「引数が指定された場合はその値を扱うけど、指定しなかった場合は初期値(1.0f)を使うよ」という意味になります。

 初期値を設定しなかった場合、効果音を再生する度に必ずボリュームを指定する必要が出てしまうため少し面倒です。使っても使わなくてもいい引数を宣言したいときは初期値を指定するようにしましょう。

 再生処理の方もこれに合わせて改造します。

 GameManagerスクリプトを開いて、赤い部分のコードを追加してください。

~前略~

    // 効果音再生関数 どこからでも呼べる
    static public void PlaySE(AudioClip clip, float volume = 1.0f)
    {
        GameObject oneShotObj = Instantiate((GameObject)Resources.Load("OneShotSE"));
        oneShotObj.GetComponent<OneShotAudioClip>().PlaySE(clip, volume);
    }

​~後略~

 これで効果音を再生するときにボリュームを指定できるようになりました。特に指定したくない時は第二引数を入れなければ自動的に1.0fが代入されるようになります。

 サンプルでは宝石の効果音を再生するときに音量を大きく下げて、ゲームオーバーやクリアの効果音は音量を上げています(宝石の音は頻繁に鳴るため)

Unity Tips!

6-4

6-4 エフェクトの実装

6-4 エフェクトの実装

1

エフェクト画像の
設定を変更する

 最後に宝石の取得時とゲームオーバー時にエフェクトを再生するようにしましょう。

​ 「Sprite」→「Effect」内のGetスプライトを選び、Sprite Modeを「Multiple」に変更してください。変更できたらSprite Editorを開いてください。

2

エフェクトの
​画像を設定する

 Sprite Editorを開いたら、左上のSliceをクリックしてください。

 Typeを「Grid By Cell Count」に変更して、Cに5を入力してください。エフェクトが5枚に分割されたら、Sliceボタンをクリックしましょう。

​ 最後に右上のApplyボタンをクリックしたら、画像の分割は完了です。Sprite Editorを閉じてください。

3

オブジェクトを
​追加する

 分割したスプライトGetをシーン上にドラッグ&ドロップしてください。後でプレハブ化するので、シーンはどこでも構いません。

 アニメーションの保存先を選べるのでAnimationフォルダ内のEffectAnimationを選択しておきます。名前は自分がわかりやすいもので構いません。

​ アニメーション名を決めたら右下の保存ボタンを押して保存しましょう。

 作成したアニメーションがループ再生になっていないか確認してください。Loop Timeにチェックが入っていた場合はチェックを外しておきましょう。

4

アニメーション
​削除処理を実装

 再生が終わったエフェクトがシーン上に残り続けてはいけないので、エフェクトの再生が終わったら自動で消えるようにしましょう。現在Unityにそのような機能はないため、スクリプトで実装します。

 新しいスクリプトAnimEndDestroyを追加して、以下のように入力してください。

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

 

// アニメーションが終了したら自動で消えるエフェクト
public class AnimEndDestroy : MonoBehaviour
{
    float m_effectLength = 0.0f;    // エフェクトの長さ
    float m_timer = 0.0f;           // エフェクト再生タイマー

 

    void Start()
    {
        // アニメーションの長さを取得
        m_effectLength = GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).length;
    }

 

    void Update()
    {
        m_timer += Time.deltaTime;
        // もしアニメーションが終了していたら自身を削除する
        if(m_effectLength < m_timer)
        {
            Destroy(gameObject);
        }
    }
}

【プログラムの解説】

・AnimatorクラスのGetCurrentAnimatorStateInfo関数で、現在再生中のアニメーションについての情報を取得することができます。

(第一引数には取得するアニメーションのレイヤーを指定します)

​ コードが書けたら保存して、AnimEndDestroyスクリプトを先ほど追加したGetアニメーションのオブジェクトにアタッチしてください。

5

プレハブ化する

 次はエフェクトをプレハブ化しましょう。

​ Prefabフォルダ内にEffectPrefabフォルダを作成し、そこへヒエラルキーからGetオブジェクトをドラッグ&ドロップしてください。プレハブ化できたらシーン上のGetオブジェクトは削除しておきます。

6

エフェクトを
​生成する

 後は宝石の取得時にGetエフェクトを生成するだけです。

​ Gemスクリプトを開いて、赤い部分のコードを追加してください。
​※ 効果音の処理は6-3で実装したものですが、実装できていない人は同じようにコードを追加してください。

~前略~

    // 効果音
    [SerializeField, Header("効果音素材")]
    AudioClip m_getSE;
    [SerializeField]
    float GemSE_volume = 1.0f;

    // エフェクト
    [SerializeField]
    GameObject GetEffect;

    void Update()
    {
        if (m_magnet)

​~後略~

~前略~
 

    private void OnTriggerEnter2D(Collider2D collision)
    {
        // プレイヤーが衝突したら…
        if (collision.CompareTag("Player"))
        {
            // スコアを加算
            GameObject.FindGameObjectWithTag("GameController").GetComponent<GameManager>().AddScore(Point);

 

            // 効果音再生
            GameManager.PlaySE(m_getSE, GemSE_volume);

 

            // エフェクト再生
            Instantiate(GetEffect, transform.position, Quaternion.identity);
 

            // 自身を削除する
            Destroy(gameObject);
        }
        // 磁力ゾーンが衝突したら…
        else if (collision.CompareTag("Magnet"))


​~後略~

 Gemのプレハブを選択して、Get EffectにGetエフェクトのプレハブを設定してください。

 ゲームを実行して、宝石の取得時にエフェクトが再生されることを確認してみてください。エフェクトが小さい場合はプレハブ側のScaleを調整してみてください。

7

ダメージの
エフェクトを実装

 教材を見ながら、同じ手順でダメージのエフェクトも作成してみましょう。

【手順】

 ① 画像を分割

 ② シーン上に追加

 ③ アニメーションの設定

 ④ AnimEndDestroyコンポーネントの追加

 ⑤ プレハブ化

 ⑥ PlayerMoveスクリプトの改造

 ⑦ インスペクターで生成するプレハブを設定

​ ダメージエフェクトはプレイヤーより前面に表示されてほしいので、プレイヤーのOrder in Layerより、ダメージエフェクトのOrder in Layerの値が大きくなるようにしてください。

 PlayerMoveスクリプトを開いて、ゲームオーバー時にGemスクリプトと同じようにエフェクトを再生するように改造しましょう。

 Playerのプレハブにダメージエフェクトのプレハブを設定できたらOKです。

 ダメージを受けたときにエフェクトが再生されることを確認してみてください。エフェクトの生成位置や大きさはお好みで調整してかまいません。

 ちなみにAnimEndDestroyコンポーネントは他のゲームでも流用できます。アニメーションの再生が終わったら自動で消えるオブジェクトを作りたい時は活用してみてください。

評価テスト

6-5

 ダメージエフェクトを再生できたら、2Dランゲーム編は終了になります!お疲れ様でした!

【評価テスト】
https://forms.gle/BhH2M5vBxneUxQPR8

6-5 スマートフォン向けにビルドする

6-5 スマートフォン向けにビルドする

評価テスト

 2Dランゲーム編では単純な2Dゲームの作り方だけでなく、演出にこだわったり後から拡張しやすいように工夫したりすることを意識して解説してきました。ほとんどの要素をプレハブ化しているので、後からステージやギミックを追加することも容易かと思われます。

 LessonEXを見て追加できそうな要素はぜひ追加してみましょう。最初はポーズ画面の実装がオススメです。

 皆さんがオリジナルのゲームを作る際にもこの教材を活かして「プレイヤーだけでなく制作側にも優しい」ゲームを作ってみてください。

 それでは完成したゲームをビルドしてみましょう。AndroidとIOSで設定方法が違うので、使用したい端末に合わせて教材を進めていってください。

 → Androidの場合

​ → IOSの場合

6-5 Androidの場合

【Androidの場合】

​ まずはUnityにAndroidへ出力するためのモジュールが追加されているか確認してください。

 Unity Hubの「インストール」から、使用しているバージョンのUnityにAndroidの表記があることを確認してください。

 ない場合は右上のボタンをクリックして「モジュールを追加」を選択し「Android Build Support」「Android SDK&NDK Tools」「Open JDK」をインストールしてください。

 次はスマートフォン側の準備をします。

​ Androidの設定を開いて、デバイス情報内のビルド番号を7回タップして開発者モードに変更してください(7回じゃない場合もあります)

 設定のシステム→開発者向けオプション内のUSBデバッグをオンにしておきます。

 スマートフォンとPCをケーブルで繋いでください。その際にスマートフォン側にUSBデバッグの許可の確認が表示されるので「許可」を選択します。

 Build Settingsを開き、プラットフォームをAndroidに変更します。

 変更すると右下に「Switch Platform」が表示されるので、クリックしてください(少し時間がかかります)

 左下のPlayer Settingsでゲーム名やアイコンを変更できます。アイコン素材は同梱していないので、アイコンを変更したい場合は各自用意してください。

 スマートフォンなので回転の設定もできます。

 今回は「横画面固定で、左右どちら側が下になっても自動で回転する」ように設定していきます。

 Default Orientationを「Auto Rotation」にして、Portrait(縦)とPortrait Upside Down(スマートフォンの上側が下)のチェックを外しておいてください。

 設定が終わったらビルドしましょう。

 スマートフォンをPCに繋いだ状態で、Build Settings右下の「Build And Run」を選択してください。保存先を聞かれるので適当な場所を選択してください。ただしAssetフォルダ下を指定してはいけません

 ビルドが終わったら自動的にスマートフォン側でゲームが起動します。実機でビルドしながらUIの大きさや難易度を調整していってください。

6-5 IOSの場合

【IOSの場合】

​ 環境がないので確認できていません。実行でき次第追記します。

 (参考になりそうなサイト

河原電子ビジネス専門学校
​ゲームクリエイター科

bottom of page