AudioSource与粒子系统不兼容

时间:2017-01-26 14:40:39

标签: c# unity3d unity5

好吧我的问题,因为它说的是指粒子系统和声音,我不是100%安全,它与粒子系统的事实有关,基本上我对我的比赛有火,当我的球与火它应该播放声音,事情是,它找不到AudioSource并继续说没有AUdioSource附加,但我已经使用2种不同的方式,通过检查器附加audioSource,并将其设置为私有并获得gameObject中audioRurce的组件,那么我做错了什么? :S

以下是代码:

using UnityEngine;
using System.Collections;

public class particlCol : MonoBehaviour {

    Manager gameManager;
    public AudioClip aud;
    private AudioSource audioC;

    void Start()
    {
        audioC = GetComponent<AudioSource> ();
        gameManager = GameObject.Find ("GameController").GetComponent<Manager> ();
    }

    void OnParticleCollision(GameObject other)
    {

        if (other.tag == "Player") {
            Debug.Log ("entrou");
            audioC.clip = aud;
            audioC.Play ();
            gameManager.LifeDown ();
        }
    }
}

对象的屏幕截图:

screenshot

Ps:之前它运作得非常好,当它触及火焰时我在游戏中失去了生命,所以问题不在于自身的冲突

2 个答案:

答案 0 :(得分:1)

你可以做一件事:

创建一个gameObj,将你想播放的音频转换为层次结构,取消选中唤醒属性上的播放,然后将它们变为上述gameObject的子节点。

然后创建一个脚本并在该脚本中创建AudioSource变量并在Start()中执行: //示例

公共AudioSource拍摄;

开始(){

拍摄= GetComponent();

}

//就是这样

现在将此脚本附加到上面制作的GameObject,并将作为子项的ur声音文件附加到脚本AudioSource变量选项(否则将不显示)。

现在无论你想把声音播放到哪里,你只需要调用那个剧本(

答案 1 :(得分:0)

Check in Awake方法是你的AudioSource null:

  void Awake()
 {
     Debug.Log("AudioSource: " + GetComponent<AudioSource>());
 }

或尝试:

[RequireComponent(typeof(AudioSource))]

我读到错误可能是由音频剪辑造成的,所以请尝试重新导入你的声音。