gpt4 book ai didi

c# - Unity3d AudioSource 不可创建

转载 作者:行者123 更新时间:2023-11-30 21:57:29 25 4
gpt4 key购买 nike

我在 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#。

最佳答案

这是完全自然的 C#,但它不会飞:

sct=new AudioSource();

Unity 具有组件驱动、基于工厂的架构。 Unity 希望您调用 AddComponent,而不是调用组件构造函数。将组件附加到特定的 GameObject:

sct = gameObject.AddComponent<AudioSource>();

这有几个原因。首先,Unity 需要每个 Component 都属于一个 GameObject。其次,Unity 的许多内置类实际上是表示资源的外壳,由引擎的底层 native 代码层创建和管理。

关于c# - Unity3d AudioSource 不可创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com