前提・実現したいこと
「Unityの教科書」という書籍を読みながらコードを書いています。
AudioSourceコンポーネンツを使い、音を鳴らしたいですが以下のエラーが出てしまい、音も鳴りません。
ご教授よろしくお願いいたします。
発生している問題・エラーメッセージ
ArgumentNullException: Value cannot be null. Parameter name: source UnityEngine.AudioSource.Play () (at <bc2876e8ff0b42a2a2a11b51f2b23c8a>:0) CarController.Update () (at Assets/CarController.cs:36)
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class CarController : MonoBehaviour 6{ 7 float speed = 0; 8 Vector2 startPos; 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 14 } 15 16 // Update is called once per frame 17 void Update() 18 { 19 // スワイプの長さを求める 20 if (Input.GetMouseButtonDown(0)) 21 { 22 // マウスをクリックした座標 23 this.startPos = Input.mousePosition; 24 } 25 else if (Input.GetMouseButtonUp(0)) 26 { 27 28 // マウスを離した座標 29 Vector2 endPos = Input.mousePosition; 30 float swipeLength = endPos.x - this.startPos.x; 31 32 // スワイプの長さを初速度に変換する 33 this.speed = swipeLength / 500.0f; 34 35 //効果音再生 36 GetComponent<AudioSource>().Play(); 37 38 } 39 40 //車を移動 41 transform.Translate(this.speed, 0, 0); 42 //減速させる(0.98は減衰係数) 43 this.speed *= 0.9f; 44 } 45}
試したこと
AudioSourceのインスペクターウィンドウでゲーム開始時に再生というチェックボックスに入れるとゲーム開始した瞬間に鳴るのは確認できました。が、マウスのボタンが離れたら音を再生することができません。
書籍を何度も読み返し、スクリプトにAudioSourceを設定しなおしたりwebでGetComponent<AudioSource>().Play();の記述が正しいか調べたりしましたが、間違っているところが分かりません。
補足情報(FW/ツールのバージョンなど)
Unity 2019.3.14f1
VisualStudio2019
AudioSourceが複数存在していませんか?(ゲーム開始時には正常な方が鳴っているが、スクリプトではclip未設定の方にアクセスしている等が考えられます)
また念の為、AudioSourceのMute(ミュート)がオンになっていないかも確認してください。
AudioSouseは上記ソースコードのCarController.csがアタッチされているcarオブジェクトに一つあるだけです。AudioSourceのミュートもチェックが外れています。
すいません。AudioSourceが何故かオブジェクトの下の階層に設定されていたことが問題だったようです。初めて設定したので、AudioSourceを追加すると下の階層に追加されると勘違いしていました。
オブジェクトのインスペクターウィンドウ中にAudioSourceが含まれていないと駄目だったんですね。
大変、初歩的な質問をしてしまい申し訳ありませんでした。
回答1件
あなたの回答
tips
プレビュー