AniDriver_PlayAudioClip.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using ChivaXR;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. public class AniDriver_PlayAudioClip : AnimationDriverBase
  7. {
  8. public AudioClip m_AudioClip;
  9. public override void FinishedState()
  10. {
  11. }
  12. public override void InitState()
  13. {
  14. }
  15. public override void StartPlay(Action finishedCallBack = null)
  16. {
  17. if (m_AudioClip == null)
  18. {
  19. finishedCallBack();
  20. }
  21. else
  22. {
  23. StartAniCoroutine(WaitAudioClipLength(finishedCallBack));
  24. }
  25. }
  26. IEnumerator WaitAudioClipLength(Action finishedCallBack = null)
  27. {
  28. GameObject tmpObj = new GameObject();
  29. AudioSource tmpAudioSource = tmpObj.AddComponent<AudioSource>();
  30. tmpAudioSource.playOnAwake = false;
  31. tmpAudioSource.clip = m_AudioClip;
  32. tmpAudioSource.Play();
  33. yield return new WaitForSeconds(m_AudioClip.length);
  34. tmpAudioSource.Stop();
  35. finishedCallBack?.Invoke();
  36. }
  37. }