我做了一个脚本,应该管理音频文件,所以多个可以同时播放。
脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MultipleSoundManager : MonoBehaviour
{
#region AudioSource Variables
public AudioSource AS1;
public AudioSource AS2;
public AudioSource AS3;
public AudioSource AS4;
public AudioSource AS5;
#endregion
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void AudioSourceManager(AudioClip clippy)
{
for (int i = 1; i > 1; i++)
{
AudioSource[] audioManagerArray = {AS1, AS2, AS3, AS4, AS5};
audioManagerArray[i].clip = clippy;
audioManagerArray[i].Play();
if(i == 5)
{
i = 1;
}
}
}
}
AudioSourceManager函数从其他脚本中调用,如下所示:
public MultipleSoundManager soundManagerScript;
soundManagerScript.AudioSourceManager(AKMShot);
当调用这个函数时,什么也没有发生。我是Unity的新手,我真的不知道问题出在哪里。
我想你的问题是
for (int i = 1; i > 1; i++)
你认为这个循环会运行多少次?
如果你能提供更多的信息,将会很有帮助。以下是一些建议:1.试着找出[AKMShot]是否为空,这可能是导致问题的原因。2.尝试查找[AS1/2/3/4/5]是否为空,可能是这个原因导致了问题。2.你可以使用"foreach"替换"for"在你的[AudioSourceManager]中,试着搜索"c# foreach"。学习,但它不能解决这个问题,它只能让你的代码看起来漂亮。3."时更新部分是无用的。你可以直接删除它们。(也只是为了让你的代码更漂亮)
代码永远不会进入for循环:
for (int i = 1; i > 1; i++)
{
//...
}