做的东西时,音频信号源已经打了2分钟 [英] Do something when the audio source has been playing for 2 mins

查看:236
本文介绍了做的东西时,音频信号源已经打了2分钟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个剧本的工作,融合1天空盒到另一个。我需要让这种混合动画时会发生audiosource在2分钟内写一些code。

我怎样才能做到这一点?
我读过有关AudioSource.timeSamples,但我真的不明白我怎么知道什么时候达到2分钟。我应该用一些其他的方法?


解决方案

 无效的start()
  {
  的debug.log(音频现在开始......);
  调用(TwoMinutesHasPassed,120F);
  }无效TwoMinutesHasPassed()
  {
  的debug.log(两分钟之内得到过去了);
  的debug.log(现在我会褪色背景);
  StartCoroutine(FadeNow);
  }私人IEnumerator的FadeNow()
  {
  tParam = 0F;
  而(tParam< 1)
    {
    tParam + = Time.deltaTime *速度;
    valToBeLerped = Mathf.Lerp(0,1,tParam);
    的debug.log(valToBeLerped是+ valToBeLerped.ToString(F4));
    产量返回NULL;
    }
  skyboxmaterial.SetFloat(_荟萃,valToBeLerped);
  的debug.log(变脸就完成了。);
  }

I've got a script working that blends one skybox into another. I need to write some code so that this blend animation happens when the audiosource is at 2 minutes.

How can I do this? I've read about AudioSource.timeSamples, but I don't really understand how I know when 2 minutes is reached. Should I use some other method?

解决方案

void Start()
  {
  Debug.Log("Audio begins now.....");
  Invoke("TwoMinutesHasPassed", 120f);
  }

void TwoMinutesHasPassed()
  {
  Debug.Log("two minutes has passed");
  Debug.Log("now i will fade the background");
  StartCoroutine("FadeNow");
  }

private IEnumerator FadeNow()
  {
  tParam = 0f;
  while (tParam < 1)
    {
    tParam += Time.deltaTime * speed;  
    valToBeLerped = Mathf.Lerp(0, 1, tParam);
    Debug.Log("valToBeLerped is " + valToBeLerped.ToString("f4"));
    yield return null;
    }
  skyboxmaterial.SetFloat("_Blend", valToBeLerped);
  Debug.Log("fade is done.");
  }

这篇关于做的东西时,音频信号源已经打了2分钟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆