以下のエラーが解消できず、困っています。
UnassignedReferenceException: The variable audioSource of draft has not been assigned.
You probably need to assign the audioSource variable of the draft script in the inspector.
スクリプトは、主に2つの処理で構成されています。
- 外部ファイルから音声・画像ファイルを取得し、Unity上に出力する
- 再生が終了したら、音楽・画像共に除去する
プログラム自体は、正常に動いています。
エラーで指摘されているaudioSourceはコンポーネントしている、かつ実際に音声は流れている状態で、使用上の差し支えはないです。
ただ、エラーに関しては気になるところで、心当たりのある方いらっしゃいましたら、助言いただけると嬉しく思います。
プログラム上のこの箇所でガタがきているのはわかっています。
”if(!audioSource.isPlaying){”
ネットからはいい解決策が見当たりませんでした。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.IO; 6using UnityEngine.SceneManagement; 7 8public class draft: MonoBehaviour 9{ 10 GameObject Recieve; 11 GameObject Image; 12 GameObject Music; 13 Recieve script; 14 15 public Sprite sprite; 16 public AudioClip audioClip; 17 public AudioSource audioSource; 18 19 20 //const string _FILE_HEADER = "file://"; 21 22 string ImagePath = "0"; 23 string MusicPath = "0"; 24 25 Image images; 26 27 28 void Start() 29 { 30 Image = GameObject.Find ("Image"); 31 images = Image.GetComponent<Image>(); 32 Music = GameObject.Find ("Music"); 33 34 ImagePath = "/Users/XXXX/Desktop/SD/pic.jpg"; 35 MusicPath = "/Users/XXXX/Desktop/SD/audio.mp3"; 36 37 } 38 39 40 void Update() 41 { 42 43 //音楽停止でDestroy 44** if(!audioSource.isPlaying){ 45** 46 images.sprite = null; 47 audioSource.clip = null; 48 49 } 50 51 } 52 53 54 private IEnumerator ChangeImage(){ 55 if (!System.IO.File.Exists(ImagePath)) //ファイルが存在しなかった場合の処理 56 { 57 yield break; 58 } 59 WWW request = new WWW(ImagePath); 60 while (!request.isDone) //読み込み待ち 61 { 62 yield return new WaitForEndOfFrame(); 63 } 64 Texture2D texture = new Texture2D (0, 0, TextureFormat.RGB24, false); 65 texture = request.texture; 66 sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); 67 images.sprite = null; 68 images.sprite = sprite; 69 yield return 0; 70 } 71 72 73 74 private IEnumerator ChangeMusic(){ 75 if (!System.IO.File.Exists(MusicPath)) //ファイルが存在しなかった場合の処理 76 { 77 yield break; 78 } 79 WWW request = new WWW(MusicPath); 80 yield return null; 81 //呼び出したデータをautoClipに格納する 82 audioClip = request.GetAudioClip(); 83 //audioClipをaudioSourceに格納する 84 audioSource = Music.GetComponent<AudioSource>(); 85 audioSource.clip = audioClip; 86 audioSource.Play(); 87 Debug.Log("Play success : " + audioClip); 88 89 } 90 91 92 93}
あなたの回答
tips
プレビュー