Unity3d AudioSource不可创建

本文关键字:创建 AudioSource Unity3d | 更新日期: 2023-09-27 17:54:13

我在unity3d中有一个奇怪的问题。我想使用几个音频源来播放具有重叠效果的声音。因为我自己无法解释这个问题——我只对一个AudioSource做了同样的尝试。所以我有这个脚本:

 public class audioOverlap:MonoBehaviour
 {
    private AudioSource sct;
    public AudioClip clp;
    void Start(){
       sct=new AudioSource(); 
       sct.clip=clp;//NullReferenceException!?
    } 
 }

由于NullReferenceException-我试图找出原因。

    void Start(){
       sct=new AudioSource(); 
       if(sct==null){Debug.Log("AudioSourceBug");/*gets executed-wtf???*/}
       if(clp==null){Debug.Log("AudioClipBug");/*gets notexecuted-okay*/}
       sct.clip=clp;//NullReferenceException!?
    } 

我知道什么是NullReferenceException -请不要将其标记为重复,当链接的问题不是一个工作的解决方案:

    我是Unity的初学者,但不是c#。

    Unity3d AudioSource不可创建

    这是非常自然的c#,但它不会飞:

    sct=new AudioSource();
    
    Unity有一个组件驱动的、基于工厂的架构。Unity希望你调用AddComponent来将组件附加到特定的GameObject,而不是调用组件构造函数:
    sct = gameObject.AddComponent<AudioSource>();
    

    有几个原因。首先,Unity需要每个ComponentGameObject拥有。其次,Unity的许多内置类实际上是代表由引擎底层本地代码层创建和管理的资源的shell。

    您是否尝试将audioSource添加到另一个对象(如子对象)?也许问题是必须在一个对象上的音频源。