伙计们我在Unity中创建音频源并为其分配片段时遇到了麻烦。

我正在流式传输文件,调试器告诉我找到了文件,并可以使用以下代码播放该文件。

@script RequireComponent(AudioSource)

var www : WWW;
var audioSource: AudioSource = gameObject.AddComponent<AudioSource>();
var myAudioClip: AudioClip;


function Start ()
{
      www = new WWW ("file://" + Application.dataPath.Substring (0, Application.dataPath.LastIndexOf ("/")) + "/Assets/intro.wav");
      myAudioClip = www.audioClip;
      Debug.Log(myAudioClip.isReadyToPlay);
}

但是,调试器在我的audioSource声明中给了我错误。
Unexpected Token: )
expecting ), found ';'
'; expected, insert a semicolon at the end.

此错误指向该行

var audioSource:AudioSource = gameObject.AddComponent();

最终,我的目标是将剪辑分配给audioSource并开始播放!

最佳答案

您已经声明需要AudioSource的组件;

@script RequireComponent(AudioSource)

因此,无需将其添加为组件。我通常不使用UnityScript,但这是您想要的代码;
@script RequireComponent(AudioSource)

var www             : WWW;
var audioSource : AudioSource;
var myAudioClip : AudioClip;

function Start () {
    audioSource = GetComponent(AudioSource);
    StartCoroutine( LoadAudio( "file://" + Application.dataPath.Substring (0, Application.dataPath.LastIndexOf ("/")) + "/Assets/intro.wav" ) );
}

function LoadAudio( path : String ) {
    www = new WWW ( path );
    yield www;
    myAudioClip = www.audioClip;
    Debug.Log(myAudioClip.isReadyToPlay);
}

要使用WWW类,您可以使用协程来等待它完成加载所需的 Assets 。或者,您可以继续检查www.isDone是否为真。

文件; http://docs.unity3d.com/ScriptReference/Coroutine.html

关于audio - 创建音频源并在Unity中分配片段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25922411/

10-10 20:22