1

S3 Bucket から曲を取得するために WWW Unity クラスを使用しています。

問題は、1 つの曲を読み込んでいるときに、ストリーミングがうまく機能し、十分な大きさのバッファが得られ、AudioSource Clip で曲を簡単に再生できることです。

関数 twich を呼び出そうとすると問題が発生します。これは、実際には 2 つの曲を同時にダウンロードする必要があることを意味します。2 番目の関数を保持しようとすると、エラーが発生することに注意してください (エラーは「赤」のエラーですが、エラーに関するデータはありません)。

関数:

 private IEnumerator startSongStreaming(int playerIndex,User user)
    {
        string url = user.getCurrentGamePerformacePath ();
        WWW www = new WWW (url);
        AudioSource audioSource = GameObject.FindGameObjectsWithTag ("PlayerResultsAudio")[playerIndex].GetComponent<AudioSource>();
        AudioClip myAudioClip = audioSource.clip;
        Debug.Log (playerIndex +  " :" +  www.progress);
        while (www.progress < .1f) {
            Debug.Log ("Streaming WWW PLAYER INDEX: " + playerIndex + " " + www.progress);
            yield return null;
        }
        myAudioClip = www.audioClip;
        Debug.Log (playerIndex +  " CHECKTHIS:" +  www.progress);
        while (!(myAudioClip.isReadyToPlay)) {
            Debug.Log ("IS READY TO PLAY PLAYER INDEX: " + playerIndex + " " + www.progress);
            yield return null;
        }
        //Debug.Log ("TESTME: " + myAudioClip.isReadyToPlay);
        audioSource.clip = www.GetAudioClip(false, true, AudioType.WAV);
        Button listen = GameObject.FindGameObjectsWithTag ("PlayerResultsListenBtn") [playerIndex].GetComponent<Button> ();
        listen.interactable = true;
    }

プレハブとゲームオブジェクトの取得に問題はありません。この関数を呼び出す関数でうまく機能します。

いずれにせよ、debug.logs はインデックスの 1 つで適切なストリーミングを返し、もう一方のインデックスでストリーミングを 1 に設定します (終了したように、実際には開始されませんでした)。そのため、0 とストリーミング (オブジェクトは動作して再生されます) と 1 と 1 のストリーミング (ストリーミングは完了しましたが、不明なエラーが発生し、オーディオを再生できません) を取得します。

質問を理解するのが難しいことはわかっています。よろしくお願いします。

4

1 に答える 1

0

わかりました、Unity3d Pro バージョンを購入しましたが、問題は解決されました。コード エラーや変更はなく、単に動作します :)。

したがって、この種の問題に取り組む人がいる場合は、Unity3d サポートに連絡してください。

于 2016-01-19T08:30:20.427 に答える