Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# audio.PlayOneShot不';我们不能团结工作_C#_Unity3d_Unity5_Unity2d - Fatal编程技术网

C# audio.PlayOneShot不';我们不能团结工作

C# audio.PlayOneShot不';我们不能团结工作,c#,unity3d,unity5,unity2d,C#,Unity3d,Unity5,Unity2d,我希望我的游戏在玩家与硬币碰撞时播放声音,但声音无法播放。我没有收到任何错误。我把声音和音源和脚本统一起来 using UnityEngine; [RequireComponent(typeof(AudioSource))] public class TriggerCoin : MonoBehaviour { //TODO //Counter of collected coins public AudioClip coinSound; new AudioSo

我希望我的游戏在玩家与硬币碰撞时播放声音,但声音无法播放。我没有收到任何错误。我把声音和音源和脚本统一起来

using UnityEngine;

[RequireComponent(typeof(AudioSource))]
public class TriggerCoin : MonoBehaviour
{

    //TODO
    //Counter of collected coins

    public AudioClip coinSound;
    new AudioSource audio;

    void Start()
    {
        audio = GetComponent<AudioSource>();
    }


    void Update()
    {

    }

    void OnTriggerEnter2D(Collider2D other)
    {
        GameObject gObj = other.gameObject;

        if (gObj.CompareTag("Player"))
            {
                Debug.Log("You picked up coin!");
                audio.PlayOneShot(coinSound, 0.8f);
                Destroy(gameObject);      
            }
    }
}
使用UnityEngine;
[所需组件(类型(音频源))]
公共类触发币:单一行为
{
//待办事项
//收集硬币的柜台
公共音频剪辑;
新音频源音频;
void Start()
{
audio=GetComponent();
}
无效更新()
{
}
无效OnTiggerEnter2D(碰撞的R2D其他)
{
GameObject gObj=other.GameObject;
如果(gObj.CompareTag(“玩家”))
{
Log(“你捡到了硬币!”);
音频.PlayOneShot(coinSound,0.8f);
摧毁(游戏对象);
}
}
}
请参见下面的问题:

audio=GetComponent()
显示
AudioSource
已附加到此脚本或此脚本(
TriggerCoin
)所附加的游戏对象

然后播放音频:
audio.PlayOneShot(coinSound,0.8f)

并立即销毁游戏对象:
destroy(GameObject)

被摧毁的GameObject也持有
AudioSource
,因此它需要
AudioSource
才能死亡

解决方案:

AudioSource
附加到一个不会销毁的空游戏对象上。让我们称之为“AudioHolder”,然后找到它并播放音频

GameObject obj = GameObject.Find("AudioHolder");

AudioSource aud = obj.GetComponent<AudioSource>();

aud.PlayOneShot(coinSound, 0.8f);
gameobjectobj=GameObject.Find(“音频持有者”);
AudioSource aud=obj.GetComponent();
aud.PlayOneShot(coinSound,0.8f);
注:

移除
新音频源音频并将音频重命名为其他内容。这样做是个好主意。

请参见下面的问题:

audio=GetComponent()
显示
音频源
已附加到此脚本或此脚本(
TriggerCoin
)所附加的游戏对象

然后播放音频:
audio.PlayOneShot(coinSound,0.8f)

并立即销毁游戏对象:
destroy(GameObject)

被摧毁的GameObject也持有
AudioSource
,因此它需要
AudioSource
才能死亡

解决方案:

AudioSource
附加到一个不会销毁的空游戏对象上。让我们称之为“AudioHolder”,然后找到它并播放音频

GameObject obj = GameObject.Find("AudioHolder");

AudioSource aud = obj.GetComponent<AudioSource>();

aud.PlayOneShot(coinSound, 0.8f);
gameobjectobj=GameObject.Find(“音频持有者”);
AudioSource aud=obj.GetComponent();
aud.PlayOneShot(coinSound,0.8f);
注:


移除
新音频源音频并将音频重命名为其他内容。这样做是个好主意。

你认为这可能是因为你在剪辑更改播放之前销毁了游戏对象。尝试延迟销毁,
Destroy(游戏对象,1f)认为这可能是因为您在剪辑更改播放之前销毁了游戏对象。尝试延迟销毁,
Destroy(游戏对象,1f)