unity 動畫 音頻播放

採用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);
相關文章
相關標籤/搜索