【发布时间】:2020-03-29 15:41:19
【问题描述】:
可能有与此类似的问题,但我找不到任何有用的问题。
我有一个简单的脚本,其中包含一个类列表,其中包含每个元素的音频剪辑、ID 和事件系统。
我需要将音频剪辑字段列出并按顺序播放,直到最后一个,然后停止并触发事件。
这是我仅用于一个音频剪辑插槽的代码: (我也试过音频剪辑数组,但它只是播放音频剪辑数组上的第一个)
public class MainAudioManager : MonoBehaviour {
public List<soundInfo> currentsoundinfoList = new List<soundInfo>();
AudioSource audioSource;
soundInfo curentSoundInfo;
float audioLenght;
void Start () {
audioSource = gameObject.GetComponent<AudioSource> ();
}
public void SetAudioToPlay (int ID) {
for (int i = 0; i < currentsoundinfoList.Count; i++) {
if (currentsoundinfoList [i].ID == ID) {
curentSoundInfo = currentsoundinfoList[i];
audioSource.clip = curentSoundInfo.clipToPlay;
audioSource.Play ();
audioLenght = audioSource.clip.length;
StartCoroutine ("waitnigTillEbd");
return;
}
}
}
IEnumerator waitnigTillEbd () {
yield return new WaitForSeconds (audioLenght + 1f);
curentSoundInfo.eventOnSound.Invoke ();
}
[System.Serializable]
public class soundInfo {
public string name;
public int ID;
public AudioClip clipToPlay;
public UnityEvent eventOnSound;
}
}
【问题讨论】:
-
偶数与什么有关?
-
你的意思是事件吗?那是统一的事件系统,它将在特定时间在运行时触发事件,在我的情况下,它将在每个 listofclips 结束迭代时触发(完整播放的音频列表)
标签: c# unity3d audio arraylist audioclip