采用Unity进行音频动画的播放时最常用的技术,在此进行一下简单讲解与应用。

(一)动画播放(本文采用animation进行验证,关于animation和animator区别可问度娘,在此不做赘述)

1、播放默认动画

直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放)

    public Animation ani;

    public void OnPlayClicked(bool isOn)
{
if(isOn)
{
ani.Play();
}
}

2、采用AddClip方法

此方法为给animation组件通过addclip方法添加动画片段,然后就可以依次播放

    //addclip方法
public Animation ani;
public AnimationClip[] aniClip; public void OnPlayClicked(bool isOn)
{
if(isOn)
{
StartCoroutine(Play()) ;
}
}
IEnumerator Play()
{
ani.AddClip(aniClip[], "");
ani.Play("");
yield return new WaitForSeconds(aniClip[].length+2f);
ani[""].time = aniClip[].length;//动画反向播放
ani[""].speed=-;
ani.Play("");
yield return new WaitForSeconds(aniClip[].length + 2f);
ani.AddClip(aniClip[], "");
ani.Play("");
}

3、采用animation组件的animations数组添加动画片段

在animation组件的animations数组中直接添加动画(此步骤相当于addclip方法),然后根据动画名称就可以播放了。

ani.Play(aniName);

关于动画播放问题再次追加一点关于动画回到起始位置的问题,动画播放回到起始位置可用ani.Rewind();方法。采用rewind方法时必须是动画播放过程中使用,stop()后时无法回到起始位置的。调用rewind后动画虽然会回到原点,但是会继续重复播放,所以在此可以先取样,然后在停止播放。

ani.Play();
ani.Rewind();
ani.Sample();
ani.Stop();

4、直接用动画名字播放

        if (isOn)
{
titleAni["TitleMove"].speed = ;
bottomAni["BottomMove"].speed = ;
titleAni.Play();
bottomAni.Play();
}
else
{
titleAni["TitleMove"].speed = -;
bottomAni["BottomMove"].speed = -;
titleAni["TitleMove"].time = titleAni.clip.length;
bottomAni["BottomMove"].time = bottomAni.clip.length;
titleAni.Play();
bottomAni.Play();
}

(二)音频播放

音频播放与动画播放类似

1、播放默认音频。默认播放音频只需要在audiosource组件中audioclip参数拖入相关音频,然后通过audiosource.Play()即可播放。

2、通过赋值方法,即通过代码给audiosource的audioclip赋值,然后播放即可。

    public AudioSource audioSource;
public AudioClip audioClip; // Use this for initialization
void Start () {
audioSource.clip = audioClip;
audioSource.Play(); }

3、采用静态方法播放

public static void PlayClipAtPoint(AudioClip clip, Vector3 position);

最新文章

  1. Win8下Visual Studio编译报“无法注册程序集***dll- 拒绝访问。请确保您正在以管理员身份运行应用程序。对注册表项”***“的访问被拒绝。”问题修正(转)
  2. 微信nickname乱码及mysql编码格式设置(utf8mb4)
  3. linux命令(1):ls命令
  4. java field, property,variable及getField和getDeclaredField的区别
  5. android小游戏 飞机躲子弹
  6. Bowtie2
  7. Android控件之ToggleButton(多状态按钮)
  8. javascript触摸事件touch使用
  9. hibernate映射文件基础
  10. GPS(1)核心API及3种列出LocationProvider的方法
  11. C语言计算程序运行时间
  12. MATLAB LU函数
  13. 对面向对象程序设计(OOP)的认识
  14. Android之Camera控制拍照
  15. hdu 1540 Tunnel Warfare(线段树区间统计)
  16. IOS开发-Swift新语言初见
  17. JavaScript中数组Array方法详解
  18. CSS3浏览器兼容
  19. FastReport编程方式给Picture控件赋值
  20. JavaScript splice() 方法和JavaScript split() 方法

热门文章

  1. HTML5-常用正则表达式
  2. Exceptionless 5.0.0 本地Docker快速部署介绍
  3. Maven 梳理-自动创建Maven项目(非web)
  4. Mysql INSTR函数
  5. rt.jar包添加源文件只需要关联到已安装对应jdk目录下source.zip源码文件即可
  6. Angular 文件上传、下载
  7. thinkphp5 模型表关联
  8. 解决thinkphp批量上传图片只有一张上传成功解决方案
  9. 03 python基础作业(一)
  10. mobaxterm使用手册