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)代码>