简体   繁体   中英

Unity3d AudioSource not creatable

I have a strange problem in unity3d. I want to use several audio sources for playing a sound with a overlapping effect. Because I can't explain the problem myself- I tried the same with only one AudioSource. So I have this script:

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

Because of the NullReferenceException- I tried figuring out why.

    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!?
    } 

I know what a NullReferenceException is-please don't mark it as duplicate when the linked question isn't a working solution:

I'm a beginner with Unity, but not with C#.

This is perfectly natural C#, but it won't fly:

sct=new AudioSource();

Unity has a component-driven, factory-based architecture. Instead of calling a component constructor, Unity wants you to call AddComponent to attach the component to a specific GameObject :

sct = gameObject.AddComponent<AudioSource>();

There are a few reasons for that. First off, Unity needs every Component to be owned by a GameObject . Second, many of Unity's built-in classes are actually shells representing resources that are created and managed by the engine's underlying native code layer.

have you tried adding the audioSource to another object (like a child object)? maybe the problem is having to audio sources on one object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM