ゲームのタイトルシーンでBGMというオブジェクトがあります。
このオブジェクトをシーンを跨いでも残しておきたく、下記コードでBGMにアタッチしています。
public static BGM instance = null; private void Awake() { if(instance) { Destroy(this.gameObject); return; } DontDestroyOnLoad (this); }
これにより、問題なくシーンを跨いでも残っているのですが、
再びタイトル画面に戻ってくるとBGMが複製され、2つ、3つと増えていってしまい、これが複製されないようにしたいです。
このコードは以前こちらで教えて頂いたのですが、いまいち理解できておらず、とりあえずDestoryがあるif文が実行されていないのだろうと思うのですが、instanceをどのようにしたら実行されるのか分かりません。
よろしくお願いいたします。
こちらの情報が参考になるかもしれません。
https://teratail.com/questions/45489
ありがとうございます。
大変申し訳ないのですが、追加で教えて頂けると幸いです。
現在、下記のようになっていたところを
private void Awake()
{
if(instance)
{
Destroy(this.gameObject);
return;
}
DontDestroyOnLoad (this);
}
private void Awake()
{
DontDestroyObjectManager.DontDestroyOnLoad(this);
}
としています。
それからURL先のDontDestroyObjectManagerを新しく作りました。
これはBGMのオブジェクトにアタッチする方がいいのでしょうか?
その後、シーン移動する前に、
DontDestroyObjectManager.DestoryAll();
を入れているのですが、変わらずタイトルシーンに戻るとBGMが2つ3つ…と増えていきます。
どうにもうまくいかず、間違っている場所があれば教えて頂けると幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー