AudioSource.PlayOneShot()が動いているのに音が聞こえない
解決したいこと
ここに解決したい内容を記載してください。
こんにちは
現在Unityで効果音を再生しようとしているのですが、うまくいきません。
本を参考にしながら自分でコードを書いて動かしました。
本に書いてあったソースコードをそのまま実行するとちゃんと再生されました。
ソースコードの34~36,48~49行目が思い通りに動かず、ゲームクリアとゲームオーバーの音が全く聞こえません。
ゲーム開始時にBGMを再生しているため、ゲームクリアかゲームオーバーになった時にはsoundPlayer.Stop()でBGMを止め、soundPlayer.PlayOneShot()でそれぞれの効果音を再生するようにしています。
エラーメッセージはなく、soundPlayer.PlayOneShot()の処理は動いているようでした。
発生している問題・エラー
(エラーメッセージはなし)
該当するソースコード
using UnityEngine;
using UnityEngine.UI;
public class GameController : MonoBehaviour
{
public GameObject mainImage;
public Sprite gameClear;
public Sprite gameOver;
public AudioClip musicgameOver;
public AudioClip musicgameClear;
float time;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
mainImage.SetActive(false);
}
// Update is called once per frame
void Update()
{
// 車オブジェクトのtimeを取得し、条件に応じて画像を表示させる
GameObject car = GameObject.FindGameObjectWithTag("Dead");
CarController carCnt = car.GetComponent<CarController>();
time = carCnt.time;
// プレイヤーオブジェクトのisSafeを取得し、クリアか残念かを判定
GameObject player = GameObject.FindGameObjectWithTag("Player");
PlayerController playerCnt = player.GetComponent<PlayerController>();
Debug.Log(time);
// 4秒経ってプレイヤーが無事の時、クリア
if (time > 4 && playerCnt.isSafe)
{
//↓ここがうまくいかない↓
AudioSource soundPlayer = GetComponent<AudioSource>();
soundPlayer.Stop();
soundPlayer.PlayOneShot(musicgameClear);
//↑ここがうまくいかない↑
ActiveImage();
}
// 車に飛ばされたらゲームオーバー
else if (playerCnt.isSafe == false)
{
//↓ここがうまくいかない↓
AudioSource soundPlayer = GetComponent<AudioSource>();
soundPlayer.Stop();
soundPlayer.PlayOneShot(musicgameOver);
//↑ここがうまくいかない↑
mainImage.GetComponent<Image>().sprite = gameOver;
ActiveImage();
}
}
void ActiveImage()
{
mainImage.SetActive(true);
}
}
自分で試したこと
①soundPlayer.Stop()をコメントアウト⇒BGMと効果音が同時に聞こえるが、効果音がほとんど雑音になっている
②soundPlayer.Stop()のコメントアウトを外して実行⇒BGMは問題なく聞こえるが、効果音はやはり聞こえない
③MainCameraオブジェクトのAudioListenerコンポーネントにチェックが入っているか確認⇒チェックは入っていた
④Gameウィンドウのスピーカーが有効か確認⇒有効になっていた