2016-10-25 6 views
0

Unity3Dゲームのボタンにボタンのクリック音を追加しようとしています。しかし、私が試したすべてのもの(下記参照)は、目的のエフェクト(クリック時のサウンド)を生成しません。ボタンは機能しますが、サウンドは生成されません。以下のリンクには、私が試したことがあり、最新のスクリプト作成の試みが添付されています。オーディオはインスペクタ(最後のリンクごと)から再生するように設定されているため、スクリプト自体にaudioSource.play()が存在しません。私は、ボタンがクリックされたときに音が再生したい:ボタンをクリックする音をクリックするUnity3D 5.4

http://answers.unity3d.com/questions/26241/play-sound-when-gui-button-is-pressed.html http://answers.unity3d.com/questions/182754/play-sound-on-button-press.html http://answers.unity3d.com/questions/857810/play-audio-from-46-ui-button-on-click-script.html

private AudioSource audioSource; 
private float audioTimer; 
public void LoadLevel(string name) 
{ 
    StartCoroutine(AudioLength(audioTimer)); 
    SceneManager.LoadScene(name); 
} 
public void Next(string name) 
{ 
    StartCoroutine(AudioLength(audioTimer)); 
    SceneManager.LoadScene(name); 
} 

void Start() 
{ 
    audioSource = this.GetComponent<AudioSource>(); 
    audioTimer = audioSource.clip.length; 
} 

void Update() 
{ 
    if(Input.GetKeyDown(KeyCode.Escape)) 
    { 
     SceneManager.LoadScene("Start Menu"); 
    } 
    else if(Input.GetKeyDown(KeyCode.Q)) 
    { 
     Application.Quit(); 
    } 
} 

IEnumerator AudioLength(float audioTimer) 
{ 
    yield return new WaitForSeconds(audioTimer); 
} 

答えて

0

私はcommunity.gamedev.tvで上の2人の人々の助けを借りて答えを発見しました。

まず、オーディオが再生される前にシーンが変更されたことが原因でした。次に、遅延を処理して次のシーンをロードするために、自分のCoroutineにLoadSceneを追加する必要がありました。私はまた、コルーチンを通じて文字列としてname変数を渡さなければなりませんでした。

関連する問題