採用Unity進行音頻動畫的播放時最經常使用的技術,在此進行一下簡單講解與應用。ios
(一)動畫播放(本文采用animation進行驗證,關於animation和animator區別可問度娘,在此不作贅述)數組
一、播放默認動畫動畫
直接將動畫拖入動畫對象animation組件的animation變量中,而後加入以下代碼既能夠播放(此處採用toggle控制動畫的播放)this
public Animation ani; public void OnPlayClicked(bool isOn) { if(isOn) { ani.Play(); } }
二、採用AddClip方法spa
此方法爲給animation組件經過addclip方法添加動畫片斷,而後就能夠依次播放code
//addclip方法 public Animation ani; public AnimationClip[] aniClip; public void OnPlayClicked(bool isOn) { if(isOn) { StartCoroutine(Play()) ; } } IEnumerator Play() { ani.AddClip(aniClip[0], "1"); ani.Play("1"); yield return new WaitForSeconds(aniClip[0].length+2f); ani["1"].time = aniClip[0].length;//動畫反向播放 ani["1"].speed=-1; ani.Play("1"); yield return new WaitForSeconds(aniClip[0].length + 2f); ani.AddClip(aniClip[1], "2"); ani.Play("2"); }
三、採用animation組件的animations數組添加動畫片斷對象
在animation組件的animations數組中直接添加動畫(此步驟至關於addclip方法),而後根據動畫名稱就能夠播放了。blog
ani.Play(aniName);
關於動畫播放問題再次追加一點關於動畫回到起始位置的問題,動畫播放回到起始位置可用ani.Rewind();方法。採用rewind方法時必須是動畫播放過程當中使用,stop()後時沒法回到起始位置的。調用rewind後動畫雖然會回到原點,可是會繼續重複播放,因此在此能夠先取樣,而後在中止播放。ip
ani.Play();
ani.Rewind();
ani.Sample();
ani.Stop();
四、直接用動畫名字播放animation
if (isOn) { titleAni["TitleMove"].speed = 2; bottomAni["BottomMove"].speed = 2; titleAni.Play(); bottomAni.Play(); } else { titleAni["TitleMove"].speed = -2; bottomAni["BottomMove"].speed = -2; titleAni["TitleMove"].time = titleAni.clip.length; bottomAni["BottomMove"].time = bottomAni.clip.length; titleAni.Play(); bottomAni.Play(); }
(二)音頻播放
音頻播放與動畫播放相似
一、播放默認音頻。默認播放音頻只須要在audiosource組件中audioclip參數拖入相關音頻,而後經過audiosource.Play()便可播放。
二、經過賦值方法,即經過代碼給audiosource的audioclip賦值,而後播放便可。
public AudioSource audioSource; public AudioClip audioClip; // Use this for initialization void Start () { audioSource.clip = audioClip; audioSource.Play(); }
三、採用靜態方法播放
public static void PlayClipAtPoint(AudioClip clip, Vector3 position);