繁体   English   中英

Unity 从不同脚本访问 PlayOneShot 会引发 object 参考错误

[英]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.

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