public AudioSource audioscd;
public GameObject nextscn;
[SerializeField] Clue firstclue;
[SerializeField] ClueSecond secondclue;
[SerializeField] ClueThird thirdclue;
// Start is called before the first frame update
void Start()
{
nextscn.SetActive(false);
}
// Update is called once per frame
void Update()
{
if (firstclue.clue1 && secondclue.clue2 && thirdclue.clue3)
{
StartCoroutine (Wait());
nextscn.SetActive(true);
audioscd.Play();
}
}
所以我有三个布尔值(因为有三个线索),当三个布尔值都为真时,会发生两件事:
1.立方体“激活”,这是下一个场景的触发器
1.播放声音
第一件事发生了,所以这个工作,但声音不播放时,我点击外面的“游戏”屏幕(仍然在统一)。
当你找到线索时,每个线索都会播放一个声音。Unity可以同时播放两个声音吗?
我做错了什么?
1条答案
按热度按时间vuv7lop31#
我认为问题在于,当所有3个布尔值都为真时,您将在每一帧的AudioSource上调用Play()。当在一个已经在播放的AudioSource上调用Play()时,它将再次从文件的开头开始。因此,如果在文件的最开头没有任何实际的音频内容,您将听不到任何声音-如果有,您可能会听到一些奇怪的毛刺声音。
我建议你在你的脚本中添加另一个bool,并将其作为一个过滤器,这样你就只能执行一次与查找所有提示相关的操作。
另一种选择是将当前在Update()中的代码放入一个协程中,该协程可以在Start()中启动,并在找到所有3个线索时停止。