1

クリックすると、ランタイム中に Unity3D の AudioSource を更新しています。

Cube ゲーム オブジェクトを作成しました。

立方体をクリックすると、AudioSource にプロパティが送信されます。

注:これは最終的に、パイプ区切りの wav ファイル (Assets Audio フォルダーに存在する) の文字列配列を介して渡される他の多くの wav ファイルを再生するためのものです。

したがって、各 CLICK EVENT で AudioSource を更新する必要があります。これにより、配列から選択された新しいファイルがロードされるたびに。

わかりました。Unity3D エディターは、スクリプトからパブリック変数を表示し、実行時に (キューブをクリックすると) それらを入力します。

私のパス変数は、Unity3D エディターに完全に表示されます。

しかし問題は、エディターのオーディオ クリップ プロパティに小さなオレンジ色のオーディオ ロゴが表示されている (何かがそこにある/ロードされているかのように) ことですが、Assets/Audio フォルダーから取得したファイルの名前は常に空です。

何も再生されませんが、エラーは発生しません!

プロパティplayOnAwakevolumeなど。_ すべてが、スクリプトを介して彼らに何をするように表現するかを正確に示しています。

注:最初のイメージでは、パス 変数は .wav ファイルを正しく指しています。

.wav が再生されないのはなぜですか?

オーディオ クリップのテキスト ボックス領域に .wav ファイル名が表示されないのはなぜですか?

スクリプトで公に宣言された変数。

私の作成したオーディオ ソース。

public Color clickColor;
public Color releaseColor;
public int clickcount = 0;    
public WWW www;
public AudioClip myAudioClip;
public string path;

void CubeClicked(GameObject tmpGameObject)
{
    // CLICK COUNT
    clickcount++;

    // CLICK COLOR
    tmpGameObject.GetComponent<Renderer>().materials[0].color = clickColor; 

    // IS TRIGGER
    tmpGameObject.GetComponent<Collider>().isTrigger = true; 

    //AUDIO
    path = "file://" + Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/")) + "/Assets/Audio/JetEngine.wav";
    www = new WWW(path);
    myAudioClip = www.audioClip;

    tmpGameObject.GetComponent<AudioSource>().clip = myAudioClip;
    tmpGameObject.GetComponent<AudioSource>().playOnAwake = false;
    tmpGameObject.GetComponent<AudioSource>().volume = 0.999f;
    tmpGameObject.GetComponent<AudioSource>().Play();

}
4

1 に答える 1

2

カブラの提案は私が必要としていたものでした。「利回りwww;」を追加 IEnumerator の使用を余儀なくされ、魔法のように機能し始めました。

StartCoroutine(playMusic(tmpGameObject));  

public IEnumerator playMusic(GameObject tmpGameObject){
    /*Same code from before goes here!*/
}
于 2016-07-07T20:00:14.843 に答える