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);
相关文章
相关标签/搜索