gpt4 book ai didi

audio - 时间流逝的声音交替

转载 作者:行者123 更新时间:2023-12-03 02:04:58 25 4
gpt4 key购买 nike

我试图编写一种方法,该方法可以添加以指定间隔依次播放的任意数量的声音。

但是问题在于它工作不一致。那是:

  • 之前播放的声音可能会在一段时间后重复几次
  • 没有声音队列,依此类推。

  • 我认为问题在于循环中的 int i会不断更新,因此没有优先级。但是在签下检查并降低 int i之后,它完全停止播放。
    using UnityEngine;
    using System.Collections;

    public class OneShot : MonoBehaviour {
    public AudioClip[] Sounds;
    public float Timer;
    private float TimerDown;

    void Start ()
    {
    TimerDown = Timer;
    audio.clip = Sounds[0];
    audio.Play();
    }

    void Update ()
    {
    int i;
    for(i = 1;i < Sounds.Length;i++)
    {
    if(TimerDown > 0) TimerDown -= Time.deltaTime;
    if(TimerDown < 0) TimerDown = 0;
    if(TimerDown == 0)
    {
    TimerDown = Timer;
    audio.clip = Sounds[i];
    audio.Play();
    }
    else
    {
    i=i-1;
    }
    }
    }

    }

    最佳答案

    您不应在此处使用for循环。使用您的代码,您将减少数组中每个AudioClip的TimerDown。每次更新您只应执行一次TimerDown -= Time.deltaTime

    相反,您可以将i(索引)存储在更新循环之外。

    private int i = 0;

    void Update ()
    {
    if(TimerDown > 0) TimerDown -= Time.deltaTime;
    if(TimerDown < 0) TimerDown = 0;
    if(TimerDown == 0)
    {
    TimerDown = Timer;
    audio.clip = Sounds[i % Sounds.Length];
    i++;
    audio.Play();
    }
    }

    关于audio - 时间流逝的声音交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280274/

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