[英]Unity Accessing PlayOneShot from different script throws object reference error
我想从 AudioClips 数组中播放 AudioClips,我试图让它与 AudioSource.PlayOneShot 一起工作,但无论出于何种原因,我在 PlayOneShot 所在的行出现“对象引用未设置为对象的实例”错误是,当我尝试从不同的脚本访问它时。 所以我做了什么,我创建了一个空游戏 object 并附加了一个 AudioSource 组件和 AudioControler 脚本。 脚本如下所示:
public AudioClip[] clips;
AudioSource audioSource;
private void Start(){
audioSource = GetComponent<AudioSource>();
}
public void PlaySound(){
audioSource.PlayOneShot(clips[0], 1);
}
然后我将一些音频剪辑附加到编辑器中的“剪辑”数组中,并从另一个脚本调用 PlaySound() 方法,它给了我错误。 知道我在这里做错了什么吗?
问题是- 从另一个脚本访问 monobehaviour 脚本,我用new
绑定来实例化它,这是一个非常糟糕的主意! 不要尝试用new
实例化从MonoBehaviour
继承的脚本:!! 这帮助我理解: MonoBehaviour
我用来解决问题的解决方案- 我创建了一个 Singleton Class 并通过它访问了我想要的方法。 它看起来是解决这个问题的最简单的方法。 看: Singleton
其他有用的主题: Singleton
我希望没有人会遇到这个问题,但如果你这样做,我希望我的错误至少可以帮助你。
公共无效播放声音(){
如果(音频源!= null)
audioSource.PlayOneShot(剪辑[0], 1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.