[UNITY]ゲームをリセットする時にサウンドはリセットさせない


走れしゆくん

友人と走れしゆくんというゲームを作りました。
そのときの学習した点、難しかった点を備忘録として書いていきます。

今回は、プレイ中に、やりなおしボタンを押したときに、サウンドも最初からになってしまう。という問題を解決します。

結論からいいますと、

DontDestroyOnLoad

という関数を使います。
これはシーンが遷移したときでもオブジェクトが破壊されないという関数です。

またDontDestroyOnLoadで破壊されないようにしたオブジェクトを破壊するときは

Destroy

を使用します。

プレイ画面で、このクラスを作成すると、やり直しをするたびにDontDestroyOnLoadが作成されて
カエルの歌のような大合唱になってしまします。

なので前画面でDontDestroyOnLoadをするクラスを作成するといいと思います。
イメージ図

まずはサウンド用のクラスを作っていきましょう

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

public class PlaySound : MonoBehaviour
{
    AudioSource audioSource;

    void Start()
    {
        audioSource = this.GetComponent();
        audioSource.Stop();
        DontDestroyOnLoad(this);
    }

    public void StartSound()
    {
        audioSource.Play();
    }

    public void StopSound()
    {
        Destroy(this.gameObject);
    }
}

StartSoundメソッドをタイトル画面→プレイ画面の遷移時に呼び出し
StopSoundメソッドをプレイ画面→タイトル画面の遷移時に呼び出せば完成です。

コメント

タイトルとURLをコピーしました